home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / Oberon⁄F™ 1.2 / Preinstalled version / Obx / Mod / BlackBox < prev    next >
MacBinary  |  1996-02-09  |  14.8 KB  |  [oODC/obnF]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
100% file MacBinary II, inited, Fri Jul 14 11:14:50 1995, modified Fri Feb 9 10:45:41 1996, creator 'obnF', type 'oODC', 14520 bytes "BlackBox" , at 0x3938 318 bytes resource default (weak)
99% file data default
100% TrID MacBinary 2 default (weak)
100% lsar MacBinary default


id metadata
keyvalue
macFileType[oODC]
macFileCreator[obnF]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 42 6c 61 63 6b 42 | 6f 78 00 00 00 00 00 00 |..BlackB|ox......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 6f 4f 44 43 6f 62 6e | 46 01 00 00 00 00 00 00 |.oODCobn|F.......|
|00000050| 00 00 00 00 00 38 b8 00 | 00 01 3e ac 2c 3a 6a ad |.....8..|..>.,:j.|
|00000060| 41 1c a5 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |A.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 9e 65 00 00 |........|.....e..|
|00000080| 43 44 4f 6f 00 00 00 00 | 82 f1 44 6f 63 75 6d 65 |CDOo....|..Docume|
|00000090| 6e 74 73 2e 53 74 64 44 | 6f 63 75 6d 65 6e 74 44 |nts.StdD|ocumentD|
|000000a0| 65 73 63 00 f1 44 6f 63 | 75 6d 65 6e 74 73 2e 44 |esc..Doc|uments.D|
|000000b0| 6f 63 75 6d 65 6e 74 44 | 65 73 63 00 f1 43 6f 6e |ocumentD|esc..Con|
|000000c0| 74 61 69 6e 65 72 73 2e | 56 69 65 77 44 65 73 63 |tainers.|ViewDesc|
|000000d0| 00 f1 56 69 65 77 73 2e | 56 69 65 77 44 65 73 63 |..Views.|ViewDesc|
|000000e0| 00 f0 53 74 6f 72 65 73 | 2e 53 74 6f 72 65 44 65 |..Stores|.StoreDe|
|000000f0| 73 63 00 00 00 00 00 00 | 00 00 00 07 00 00 00 35 |sc......|.......5|
|00000100| 38 00 00 00 00 00 83 f1 | 44 6f 63 75 6d 65 6e 74 |8.......|Document|
|00000110| 73 2e 4d 6f 64 65 6c 44 | 65 73 63 00 f1 43 6f 6e |s.ModelD|esc..Con|
|00000120| 74 61 69 6e 65 72 73 2e | 4d 6f 64 65 6c 44 65 73 |tainers.|ModelDes|
|00000130| 63 00 f1 4d 6f 64 65 6c | 73 2e 4d 6f 64 65 6c 44 |c..Model|s.ModelD|
|00000140| 65 73 63 00 f1 53 74 6f | 72 65 73 2e 45 6c 65 6d |esc..Sto|res.Elem|
|00000150| 44 65 73 63 00 f2 04 00 | 00 00 00 00 00 00 83 37 |Desc....|.......7|
|00000160| 00 00 09 00 00 00 7b 37 | 00 00 00 00 00 00 00 82 |......{7|........|
|00000170| f1 54 65 78 74 56 69 65 | 77 73 2e 53 74 64 56 69 |.TextVie|ws.StdVi|
|00000180| 65 77 44 65 73 63 00 f1 | 54 65 78 74 56 69 65 77 |ewDesc..|TextView|
|00000190| 73 2e 56 69 65 77 44 65 | 73 63 00 f2 02 00 00 00 |s.ViewDe|sc......|
|000001a0| 00 00 00 00 00 00 00 00 | 07 00 00 00 25 37 00 00 |........|....%7..|
|000001b0| 00 00 00 83 f1 54 65 78 | 74 4d 6f 64 65 6c 73 2e |.....Tex|tModels.|
|000001c0| 53 74 64 4d 6f 64 65 6c | 44 65 73 63 00 f1 54 65 |StdModel|Desc..Te|
|000001d0| 78 74 4d 6f 64 65 6c 73 | 2e 4d 6f 64 65 6c 44 65 |xtModels|.ModelDe|
|000001e0| 73 63 00 f2 06 00 00 00 | 00 00 00 00 27 35 00 00 |sc......|....'5..|
|000001f0| 0f 00 00 00 1f 35 00 00 | 00 00 00 00 00 00 d2 01 |.....5..|........|
|00000200| 00 00 00 82 f1 54 65 78 | 74 4d 6f 64 65 6c 73 2e |.....Tex|tModels.|
|00000210| 41 74 74 72 69 62 75 74 | 65 73 44 65 73 63 00 f2 |Attribut|esDesc..|
|00000220| 04 00 00 00 00 00 00 00 | 2f 00 00 00 00 00 00 00 |........|/.......|
|00000230| 22 00 00 00 00 00 00 00 | 00 01 00 00 00 00 48 65 |".......|......He|
|00000240| 6c 76 65 74 69 63 61 00 | 7c be 01 00 00 00 00 00 |lvetica.||.......|
|00000250| 90 01 00 00 00 00 ab 00 | 00 00 01 82 f2 0d 00 00 |........|........|
|00000260| 00 00 00 00 00 5c 00 00 | 00 00 00 00 00 22 00 00 |.....\..|....."..|
|00000270| 00 00 00 00 00 00 01 00 | 00 00 00 48 65 6c 76 65 |........|...Helve|
|00000280| 74 69 63 61 00 7c be 01 | 00 01 00 00 00 90 01 00 |tica.|..|........|
|00000290| 00 00 00 0c 00 00 00 00 | 28 00 00 00 01 0e 00 00 |........|(.......|
|000002a0| 00 00 80 00 00 00 01 13 | 00 00 00 00 07 00 00 00 |........|........|
|000002b0| 01 15 00 00 00 00 07 00 | 00 00 01 1c 00 00 00 00 |........|........|
|000002c0| 1f 01 00 00 02 82 f2 0d | 00 00 00 00 00 00 00 00 |........|........|
|000002d0| 00 00 00 00 00 00 00 22 | 00 00 00 00 00 00 00 00 |......."|........|
|000002e0| 01 00 00 00 00 48 65 6c | 76 65 74 69 63 61 00 7c |.....Hel|vetica.||
|000002f0| be 01 00 00 00 00 00 bc | 02 00 00 00 00 04 00 00 |........|........|
|00000300| 00 00 25 01 00 00 01 1b | 00 00 00 00 64 00 00 00 |..%.....|....d...|
|00000310| 02 06 00 00 00 00 97 00 | 00 00 02 06 00 00 00 00 |........|........|
|00000320| e3 06 00 00 02 01 00 00 | 00 00 2b 03 00 00 02 06 |........|..+.....|
|00000330| 00 00 00 00 15 00 00 00 | 01 13 00 00 00 00 4d 03 |........|......M.|
|00000340| 00 00 01 0b 00 00 00 00 | 96 04 00 00 02 03 00 00 |........|........|
|00000350| 00 00 6e 01 00 00 01 04 | 00 00 00 00 1f 04 00 00 |..n.....|........|
|00000360| 02 06 00 00 00 00 b6 00 | 00 00 02 01 00 00 00 00 |........|........|
|00000370| b1 00 00 00 02 01 00 00 | 00 00 f5 07 00 00 01 0c |........|........|
|00000380| 00 00 00 00 76 02 00 00 | 01 24 00 00 00 00 b1 03 |....v...|.$......|
|00000390| 00 00 01 0e 00 00 00 00 | 0d 00 00 00 02 08 00 00 |........|........|
|000003a0| 00 00 7c 00 00 00 02 0c | 00 00 00 00 38 01 00 00 |..|.....|....8...|
|000003b0| 02 11 00 00 00 00 bc 00 | 00 00 02 03 00 00 00 00 |........|........|
|000003c0| 62 01 00 00 02 03 00 00 | 00 00 4b 02 00 00 00 3d |b.......|..K....=|
|000003d0| 00 00 00 ff 4d 4f 44 55 | 4c 45 20 4f 62 78 42 6c |....MODU|LE ObxBl|
|000003e0| 61 63 6b 42 6f 78 3b 0d | 0d 09 49 4d 50 4f 52 54 |ackBox;.|..IMPORT|
|000003f0| 20 50 6f 72 74 73 2c 20 | 53 74 6f 72 65 73 2c 20 | Ports, |Stores, |
|00000400| 4d 6f 64 65 6c 73 2c 20 | 56 69 65 77 73 2c 20 43 |Models, |Views, C|
|00000410| 6f 6e 74 72 6f 6c 6c 65 | 72 73 2c 20 50 72 6f 70 |ontrolle|rs, Prop|
|00000420| 65 72 74 69 65 73 2c 20 | 46 6f 6e 74 73 2c 20 44 |erties, |Fonts, D|
|00000430| 69 61 6c 6f 67 2c 20 53 | 65 72 76 69 63 65 73 3b |ialog, S|ervices;|
|00000440| 0d 0d 09 43 4f 4e 53 54 | 20 0d 09 09 6d 69 6e 64 |...CONST| ...mind|
|00000450| 65 64 20 3d 20 2d 33 3b | 20 6d 61 72 6b 65 64 20 |ed = -3;| marked |
|00000460| 3d 20 2d 34 3b 20 6d 61 | 72 6b 65 64 41 6e 64 4d |= -4; ma|rkedAndM|
|00000470| 69 6e 64 65 64 20 3d 20 | 2d 37 3b 09 28 2a 20 69 |inded = |-7;.(* i|
|00000480| 6e 73 69 64 65 20 6d 61 | 72 6b 73 20 2a 29 0d 09 |nside ma|rks *)..|
|00000490| 09 61 62 73 6f 72 62 65 | 64 20 3d 20 2d 31 3b 20 |.absorbe|d = -1; |
|000004a0| 72 65 66 6c 65 63 74 65 | 64 20 3d 20 2d 32 3b 09 |reflecte|d = -2;.|
|000004b0| 28 2a 20 6f 75 74 73 69 | 64 65 20 6d 61 72 6b 73 |(* outsi|de marks|
|000004c0| 20 2a 29 0d 09 09 76 65 | 72 73 69 6f 6e 20 3d 20 | *)...ve|rsion = |
|000004d0| 30 3b 0d 0d 09 54 59 50 | 45 0d 09 09 4d 6f 64 65 |0;...TYP|E...Mode|
|000004e0| 6c 20 3d 20 50 4f 49 4e | 54 45 52 20 54 4f 20 52 |l = POIN|TER TO R|
|000004f0| 45 43 4f 52 44 20 28 4d | 6f 64 65 6c 73 2e 4d 6f |ECORD (M|odels.Mo|
|00000500| 64 65 6c 44 65 73 63 29 | 0d 09 09 09 62 6f 61 72 |delDesc)|....boar|
|00000510| 64 20 3a 20 50 4f 49 4e | 54 45 52 20 54 4f 20 41 |d : POIN|TER TO A|
|00000520| 52 52 41 59 20 4f 46 20 | 41 52 52 41 59 20 4f 46 |RRAY OF |ARRAY OF|
|00000530| 20 53 48 4f 52 54 49 4e | 54 3b 0d 09 09 09 6d 2c | SHORTIN|T;....m,|
|00000540| 20 28 2a 20 73 69 7a 65 | 20 6f 66 20 62 6f 61 72 | (* size| of boar|
|00000550| 64 20 2a 29 0d 09 09 09 | 70 2c 20 28 2a 20 6e 75 |d *)....|p, (* nu|
|00000560| 6d 62 65 72 20 6f 66 20 | 61 74 6f 6d 73 20 2a 29 |mber of |atoms *)|
|00000570| 0d 09 09 09 6e 2c 20 28 | 2a 20 6e 75 6d 62 65 72 |....n, (|* number|
|00000580| 20 6f 66 20 61 63 74 75 | 61 6c 20 67 75 65 73 73 | of actu|al guess|
|00000590| 20 2a 29 0d 09 09 09 73 | 63 6f 72 65 3a 20 49 4e | *)....s|core: IN|
|000005a0| 54 45 47 45 52 3b 20 0d | 09 09 09 73 68 6f 77 73 |TEGER; .|...shows|
|000005b0| 6f 6c 3a 20 42 4f 4f 4c | 45 41 4e 0d 09 09 45 4e |ol: BOOL|EAN...EN|
|000005c0| 44 3b 0d 0d 09 09 50 61 | 74 68 20 3d 20 50 4f 49 |D;....Pa|th = POI|
|000005d0| 4e 54 45 52 20 54 4f 20 | 52 45 43 4f 52 44 0d 09 |NTER TO |RECORD..|
|000005e0| 09 09 69 2c 20 6a 3a 20 | 49 4e 54 45 47 45 52 3b |..i, j: |INTEGER;|
|000005f0| 20 6e 65 78 74 3a 20 50 | 61 74 68 0d 09 09 45 4e | next: P|ath...EN|
|00000600| 44 3b 0d 0d 09 09 56 69 | 65 77 20 3d 20 50 4f 49 |D;....Vi|ew = POI|
|00000610| 4e 54 45 52 20 54 4f 20 | 52 45 43 4f 52 44 20 28 |NTER TO |RECORD (|
|00000620| 56 69 65 77 73 2e 56 69 | 65 77 44 65 73 63 29 0d |Views.Vi|ewDesc).|
|00000630| 09 09 09 6d 6f 64 3a 20 | 4d 6f 64 65 6c 3b 0d 09 |...mod: |Model;..|
|00000640| 09 09 69 2c 20 6a 3a 20 | 49 4e 54 45 47 45 52 3b |..i, j: |INTEGER;|
|00000650| 0d 09 09 09 64 3a 20 4c | 4f 4e 47 49 4e 54 3b 0d |....d: L|ONGINT;.|
|00000660| 09 09 09 66 6f 6e 74 3a | 20 46 6f 6e 74 73 2e 46 |...font:| Fonts.F|
|00000670| 6f 6e 74 0d 09 09 45 4e | 44 3b 0d 0d 09 09 55 70 |ont...EN|D;....Up|
|00000680| 64 61 74 65 4d 73 67 20 | 3d 20 52 45 43 4f 52 44 |dateMsg |= RECORD|
|00000690| 20 28 4d 6f 64 65 6c 73 | 2e 55 70 64 61 74 65 4d | (Models|.UpdateM|
|000006a0| 73 67 29 20 45 4e 44 3b | 0d 0d 09 56 41 52 20 0d |sg) END;|...VAR .|
|000006b0| 09 09 70 61 72 61 2a 3a | 20 52 45 43 4f 52 44 0d |..para*:| RECORD.|
|000006c0| 09 09 09 6e 72 4f 66 41 | 74 6f 6d 73 2a 2c 20 62 |...nrOfA|toms*, b|
|000006d0| 6f 61 72 64 53 69 7a 65 | 2a 3a 20 49 4e 54 45 47 |oardSize|*: INTEG|
|000006e0| 45 52 0d 09 09 45 4e 44 | 3b 0d 0d 09 09 73 65 65 |ER...END|;....see|
|000006f0| 64 3a 20 4c 4f 4e 47 49 | 4e 54 3b 0d 0d 09 50 52 |d: LONGI|NT;...PR|
|00000700| 4f 43 45 44 55 52 45 20 | 55 6e 69 52 61 6e 64 20 |OCEDURE |UniRand |
|00000710| 28 29 3a 20 52 45 41 4c | 3b 0d 09 09 43 4f 4e 53 |(): REAL|;...CONS|
|00000720| 54 20 61 20 3d 20 31 36 | 38 30 37 3b 20 6d 20 3d |T a = 16|807; m =|
|00000730| 20 32 31 34 37 34 38 33 | 36 34 37 3b 20 71 20 3d | 2147483|647; q =|
|00000740| 20 6d 20 44 49 56 20 61 | 3b 20 72 20 3d 20 6d 20 | m DIV a|; r = m |
|00000750| 4d 4f 44 20 61 3b 0d 09 | 42 45 47 49 4e 0d 09 09 |MOD a;..|BEGIN...|
|00000760| 73 65 65 64 20 3a 3d 20 | 61 2a 28 73 65 65 64 20 |seed := |a*(seed |
|00000770| 4d 4f 44 20 71 29 20 2d | 20 72 2a 28 73 65 65 64 |MOD q) -| r*(seed|
|00000780| 20 44 49 56 20 71 29 3b | 0d 09 09 49 46 20 73 65 | DIV q);|...IF se|
|00000790| 65 64 20 3c 3d 20 30 20 | 54 48 45 4e 20 73 65 65 |ed <= 0 |THEN see|
|000007a0| 64 20 3a 3d 20 73 65 65 | 64 20 2b 20 6d 20 45 4e |d := see|d + m EN|
|000007b0| 44 3b 0d 09 09 52 45 54 | 55 52 4e 20 73 65 65 64 |D;...RET|URN seed|
|000007c0| 20 2a 20 28 31 2e 30 2f | 6d 29 0d 09 45 4e 44 20 | * (1.0/|m)..END |
|000007d0| 55 6e 69 52 61 6e 64 3b | 0d 0d 09 28 2a 20 70 72 |UniRand;|...(* pr|
|000007e0| 6f 62 6c 65 6d 2d 73 70 | 65 63 69 66 69 63 20 70 |oblem-sp|ecific p|
|000007f0| 61 72 74 20 2a 29 0d 0d | 09 50 52 4f 43 45 44 55 |art *)..|.PROCEDU|
|00000800| 52 45 20 41 74 6f 6d 20 | 28 6d 3a 20 4d 6f 64 65 |RE Atom |(m: Mode|
|00000810| 6c 3b 20 69 2c 6a 3a 20 | 49 4e 54 45 47 45 52 29 |l; i,j: |INTEGER)|
|00000820| 3a 20 42 4f 4f 4c 45 41 | 4e 3b 0d 09 09 56 41 52 |: BOOLEA|N;...VAR|
|00000830| 20 62 3a 20 53 48 4f 52 | 54 49 4e 54 3b 0d 09 42 | b: SHOR|TINT;..B|
|00000840| 45 47 49 4e 0d 09 09 62 | 20 3a 3d 20 6d 2e 62 6f |EGIN...b| := m.bo|
|00000850| 61 72 64 5b 69 2c 6a 5d | 3b 20 52 45 54 55 52 4e |ard[i,j]|; RETURN|
|00000860| 20 28 62 20 3d 20 6d 69 | 6e 64 65 64 29 20 4f 52 | (b = mi|nded) OR|
|00000870| 20 28 62 20 3d 20 6d 61 | 72 6b 65 64 41 6e 64 4d | (b = ma|rkedAndM|
|00000880| 69 6e 64 65 64 29 0d 09 | 45 4e 44 20 41 74 6f 6d |inded)..|END Atom|
|00000890| 3b 0d 0d 09 50 52 4f 43 | 45 44 55 52 45 20 4d 61 |;...PROC|EDURE Ma|
|000008a0| 72 6b 65 64 20 28 6d 3a | 20 4d 6f 64 65 6c 3b 20 |rked (m:| Model; |
|000008b0| 69 2c 6a 3a 20 49 4e 54 | 45 47 45 52 29 3a 20 42 |i,j: INT|EGER): B|
|000008c0| 4f 4f 4c 45 41 4e 3b 0d | 09 09 56 41 52 20 62 3a |OOLEAN;.|..VAR b:|
|000008d0| 20 53 48 4f 52 54 49 4e | 54 3b 0d 09 42 45 47 49 | SHORTIN|T;..BEGI|
|000008e0| 4e 0d 09 09 62 20 3a 3d | 20 6d 2e 62 6f 61 72 64 |N...b :=| m.board|
|000008f0| 5b 69 2c 6a 5d 3b 20 52 | 45 54 55 52 4e 20 28 62 |[i,j]; R|ETURN (b|
|00000900| 20 3d 20 6d 61 72 6b 65 | 64 29 20 4f 52 20 28 62 | = marke|d) OR (b|
|00000910| 20 3d 20 6d 61 72 6b 65 | 64 41 6e 64 4d 69 6e 64 | = marke|dAndMind|
|00000920| 65 64 29 0d 09 45 4e 44 | 20 4d 61 72 6b 65 64 3b |ed)..END| Marked;|
|00000930| 0d 0d 09 50 52 4f 43 45 | 44 55 52 45 20 53 68 6f |...PROCE|DURE Sho|
|00000940| 6f 74 20 28 6d 3a 20 4d | 6f 64 65 6c 3b 20 69 31 |ot (m: M|odel; i1|
|00000950| 2c 20 6a 31 3a 20 49 4e | 54 45 47 45 52 29 3b 0d |, j1: IN|TEGER);.|
|00000960| 09 09 56 41 52 20 69 2c | 20 6a 2c 20 64 2c 20 64 |..VAR i,| j, d, d|
|00000970| 69 2c 20 64 6a 20 3a 20 | 49 4e 54 45 47 45 52 3b |i, dj : |INTEGER;|
|00000980| 0d 09 42 45 47 49 4e 0d | 09 09 49 46 20 6a 31 20 |..BEGIN.|..IF j1 |
|00000990| 3d 20 30 20 54 48 45 4e | 20 64 69 20 3a 3d 20 30 |= 0 THEN| di := 0|
|000009a0| 3b 20 64 6a 20 3a 3d 20 | 31 0d 09 09 45 4c 53 49 |; dj := |1...ELSI|
|000009b0| 46 20 6a 31 20 3d 20 6d | 2e 6d 2b 31 20 54 48 45 |F j1 = m|.m+1 THE|
|000009c0| 4e 20 64 69 20 3a 3d 20 | 30 3b 20 64 6a 20 3a 3d |N di := |0; dj :=|
|000009d0| 20 2d 31 0d 09 09 45 4c | 53 49 46 20 69 31 20 3d | -1...EL|SIF i1 =|
|000009e0| 20 30 20 54 48 45 4e 20 | 64 69 20 3a 3d 20 31 3b | 0 THEN |di := 1;|
|000009f0| 20 64 6a 20 3a 3d 20 30 | 0d 09 09 45 4c 53 49 46 | dj := 0|...ELSIF|
|00000a00| 20 69 31 20 3d 20 6d 2e | 6d 2b 31 20 54 48 45 4e | i1 = m.|m+1 THEN|
|00000a10| 20 64 69 20 3a 3d 20 2d | 31 3b 20 64 6a 20 3a 3d | di := -|1; dj :=|
|00000a20| 20 30 0d 09 09 45 4e 44 | 3b 20 0d 09 09 69 20 3a | 0...END|; ...i :|
|00000a30| 3d 20 69 31 3b 20 6a 20 | 3a 3d 20 6a 31 3b 0d 09 |= i1; j |:= j1;..|
|00000a40| 09 49 46 20 7e 41 74 6f | 6d 28 6d 2c 20 69 2b 64 |.IF ~Ato|m(m, i+d|
|00000a50| 69 2c 20 6a 2b 64 6a 29 | 20 54 48 45 4e 0d 09 09 |i, j+dj)| THEN...|
|00000a60| 09 52 45 50 45 41 54 0d | 09 09 09 09 49 46 20 41 |.REPEAT.|....IF A|
|00000a70| 74 6f 6d 28 6d 2c 20 69 | 2b 64 69 2b 64 6a 2c 20 |tom(m, i|+di+dj, |
|00000a80| 6a 2b 64 69 2b 64 6a 29 | 20 54 48 45 4e 20 64 20 |j+di+dj)| THEN d |
|00000a90| 3a 3d 20 64 69 3b 20 64 | 69 20 3a 3d 20 2d 64 6a |:= di; d|i := -dj|
|00000aa0| 3b 20 64 6a 20 3a 3d 20 | 2d 64 0d 09 09 09 09 45 |; dj := |-d.....E|
|00000ab0| 4c 53 49 46 20 41 74 6f | 6d 28 6d 2c 69 2b 64 69 |LSIF Ato|m(m,i+di|
|00000ac0| 2d 64 6a 2c 20 6a 2d 64 | 69 2b 64 6a 29 20 54 48 |-dj, j-d|i+dj) TH|
|00000ad0| 45 4e 20 64 20 3a 3d 20 | 64 69 3b 20 64 69 20 3a |EN d := |di; di :|
|00000ae0| 3d 20 64 6a 3b 20 64 6a | 20 3a 3d 20 64 0d 09 09 |= dj; dj| := d...|
|00000af0| 09 09 45 4c 53 45 20 69 | 20 3a 3d 20 69 2b 64 69 |..ELSE i| := i+di|
|00000b00| 3b 20 6a 20 3a 3d 20 6a | 2b 64 6a 0d 09 09 09 09 |; j := j|+dj.....|
|00000b10| 45 4e 44 0d 09 09 09 55 | 4e 54 49 4c 20 28 69 3d |END....U|NTIL (i=|
|00000b20| 30 29 20 4f 52 20 28 69 | 3d 6d 2e 6d 2b 31 29 20 |0) OR (i|=m.m+1) |
|00000b30| 4f 52 20 28 6a 3d 30 29 | 20 4f 52 20 28 6a 3d 6d |OR (j=0)| OR (j=m|
|00000b40| 2e 6d 2b 31 29 20 4f 52 | 20 41 74 6f 6d 28 6d 2c |.m+1) OR| Atom(m,|
|00000b50| 20 69 2b 64 69 2c 20 6a | 2b 64 6a 29 3b 0d 09 09 | i+di, j|+dj);...|
|00000b60| 09 49 46 20 28 69 3d 30 | 29 20 4f 52 20 28 69 3d |.IF (i=0|) OR (i=|
|00000b70| 6d 2e 6d 2b 31 29 20 4f | 52 20 28 6a 3d 30 29 20 |m.m+1) O|R (j=0) |
|00000b80| 4f 52 20 28 6a 3d 6d 2e | 6d 2b 31 29 20 54 48 45 |OR (j=m.|m+1) THE|
|00000b90| 4e 0d 09 09 09 09 49 46 | 20 28 69 20 3d 20 69 31 |N.....IF| (i = i1|
|00000ba0| 29 20 26 20 28 6a 20 3d | 20 6a 31 29 20 54 48 45 |) & (j =| j1) THE|
|00000bb0| 4e 20 6d 2e 62 6f 61 72 | 64 5b 69 31 2c 20 6a 31 |N m.boar|d[i1, j1|
|00000bc0| 5d 20 3a 3d 20 72 65 66 | 6c 65 63 74 65 64 0d 09 |] := ref|lected..|
|00000bd0| 09 09 09 45 4c 53 45 20 | 49 4e 43 28 6d 2e 6e 29 |...ELSE |INC(m.n)|
|00000be0| 3b 20 6d 2e 62 6f 61 72 | 64 5b 69 2c 6a 5d 20 3a |; m.boar|d[i,j] :|
|00000bf0| 3d 20 53 48 4f 52 54 28 | 6d 2e 6e 29 3b 20 6d 2e |= SHORT(|m.n); m.|
|00000c00| 62 6f 61 72 64 5b 69 31 | 2c 6a 31 5d 20 3a 3d 20 |board[i1|,j1] := |
|00000c10| 53 48 4f 52 54 28 6d 2e | 6e 29 0d 09 09 09 09 45 |SHORT(m.|n).....E|
|00000c20| 4e 44 0d 09 09 09 45 4c | 53 45 20 6d 2e 62 6f 61 |ND....EL|SE m.boa|
|00000c30| 72 64 5b 69 31 2c 6a 31 | 5d 20 3a 3d 20 61 62 73 |rd[i1,j1|] := abs|
|00000c40| 6f 72 62 65 64 0d 09 09 | 09 45 4e 44 0d 09 09 45 |orbed...|.END...E|
|00000c50| 4c 53 45 20 6d 2e 62 6f | 61 72 64 5b 69 31 2c 6a |LSE m.bo|ard[i1,j|
|00000c60| 31 5d 20 3a 3d 20 61 62 | 73 6f 72 62 65 64 0d 09 |1] := ab|sorbed..|
|00000c70| 09 45 4e 44 0d 09 45 4e | 44 20 53 68 6f 6f 74 3b |.END..EN|D Shoot;|
|00000c80| 0d 0d 09 50 52 4f 43 45 | 44 55 52 45 20 47 65 74 |...PROCE|DURE Get|
|00000c90| 50 61 74 68 20 28 6d 3a | 20 4d 6f 64 65 6c 3b 20 |Path (m:| Model; |
|00000ca0| 69 2c 20 6a 3a 20 49 4e | 54 45 47 45 52 3b 20 56 |i, j: IN|TEGER; V|
|00000cb0| 41 52 20 70 3a 20 50 61 | 74 68 29 3b 0d 09 09 56 |AR p: Pa|th);...V|
|00000cc0| 41 52 20 64 2c 20 64 69 | 2c 20 64 6a 20 3a 20 49 |AR d, di|, dj : I|
|00000cd0| 4e 54 45 47 45 52 3b 0d | 09 09 50 52 4f 43 45 44 |NTEGER;.|..PROCED|
|00000ce0| 55 52 45 20 41 64 64 50 | 6f 69 6e 74 28 69 2c 20 |URE AddP|oint(i, |
|00000cf0| 6a 3a 20 49 4e 54 45 47 | 45 52 29 3b 20 0d 09 09 |j: INTEG|ER); ...|
|00000d00| 09 56 41 52 20 71 3a 20 | 50 61 74 68 3b 0d 09 09 |.VAR q: |Path;...|
|00000d10| 42 45 47 49 4e 0d 09 09 | 09 49 46 20 28 70 20 3d |BEGIN...|.IF (p =|
|00000d20| 20 4e 49 4c 29 20 4f 52 | 20 28 70 2e 69 20 23 20 | NIL) OR| (p.i # |
|00000d30| 69 29 20 4f 52 20 28 70 | 2e 6a 20 23 20 6a 29 20 |i) OR (p|.j # j) |
|00000d40| 54 48 45 4e 20 4e 45 57 | 28 71 29 3b 20 71 2e 69 |THEN NEW|(q); q.i|
|00000d50| 20 3a 3d 20 69 3b 20 71 | 2e 6a 20 3a 3d 20 6a 3b | := i; q|.j := j;|
|00000d60| 20 71 2e 6e 65 78 74 20 | 3a 3d 20 70 3b 20 70 20 | q.next |:= p; p |
|00000d70| 3a 3d 20 71 20 45 4e 44 | 0d 09 09 45 4e 44 20 41 |:= q END|...END A|
|00000d80| 64 64 50 6f 69 6e 74 3b | 0d 09 42 45 47 49 4e 0d |ddPoint;|..BEGIN.|
|00000d90| 09 09 49 46 20 6a 20 3d | 20 30 20 54 48 45 4e 20 |..IF j =| 0 THEN |
|00000da0| 64 69 20 3a 3d 20 30 3b | 20 64 6a 20 3a 3d 20 31 |di := 0;| dj := 1|
|00000db0| 0d 09 09 45 4c 53 49 46 | 20 6a 20 3d 20 6d 2e 6d |...ELSIF| j = m.m|
|00000dc0| 2b 31 20 54 48 45 4e 20 | 64 69 20 3a 3d 20 30 3b |+1 THEN |di := 0;|
|00000dd0| 20 64 6a 20 3a 3d 20 2d | 31 0d 09 09 45 4c 53 49 | dj := -|1...ELSI|
|00000de0| 46 20 69 20 3d 20 30 20 | 54 48 45 4e 20 64 69 20 |F i = 0 |THEN di |
|00000df0| 3a 3d 20 31 3b 20 64 6a | 20 3a 3d 20 30 0d 09 09 |:= 1; dj| := 0...|
|00000e00| 45 4c 53 49 46 20 69 20 | 3d 20 6d 2e 6d 2b 31 20 |ELSIF i |= m.m+1 |
|00000e10| 54 48 45 4e 20 64 69 20 | 3a 3d 20 2d 31 3b 20 64 |THEN di |:= -1; d|
|00000e20| 6a 20 3a 3d 20 30 0d 09 | 09 45 4e 44 3b 20 0d 09 |j := 0..|.END; ..|
|00000e30| 09 49 46 20 7e 41 74 6f | 6d 28 6d 2c 20 69 2b 64 |.IF ~Ato|m(m, i+d|
|00000e40| 69 2c 20 6a 2b 64 6a 29 | 20 54 48 45 4e 20 41 64 |i, j+dj)| THEN Ad|
|00000e50| 64 50 6f 69 6e 74 28 69 | 2c 20 6a 29 3b 0d 09 09 |dPoint(i|, j);...|
|00000e60| 09 52 45 50 45 41 54 0d | 09 09 09 09 49 46 20 41 |.REPEAT.|....IF A|
|00000e70| 74 6f 6d 28 6d 2c 20 69 | 2b 64 69 2b 64 6a 2c 20 |tom(m, i|+di+dj, |
|00000e80| 6a 2b 64 69 2b 64 6a 29 | 20 54 48 45 4e 20 64 20 |j+di+dj)| THEN d |
|00000e90| 3a 3d 20 64 69 3b 20 64 | 69 20 3a 3d 20 2d 64 6a |:= di; d|i := -dj|
|00000ea0| 3b 20 64 6a 20 3a 3d 20 | 2d 64 3b 20 41 64 64 50 |; dj := |-d; AddP|
|00000eb0| 6f 69 6e 74 28 69 2c 20 | 6a 29 0d 09 09 09 09 45 |oint(i, |j).....E|
|00000ec0| 4c 53 49 46 20 41 74 6f | 6d 28 6d 2c 20 69 2b 64 |LSIF Ato|m(m, i+d|
|00000ed0| 69 2d 64 6a 2c 20 6a 2d | 64 69 2b 64 6a 29 20 54 |i-dj, j-|di+dj) T|
|00000ee0| 48 45 4e 20 64 20 3a 3d | 20 64 69 3b 20 64 69 20 |HEN d :=| di; di |
|00000ef0| 3a 3d 20 64 6a 3b 20 64 | 6a 20 3a 3d 20 64 3b 20 |:= dj; d|j := d; |
|00000f00| 41 64 64 50 6f 69 6e 74 | 28 69 2c 20 6a 29 0d 09 |AddPoint|(i, j)..|
|00000f10| 09 09 09 45 4c 53 45 20 | 69 20 3a 3d 20 69 2b 64 |...ELSE |i := i+d|
|00000f20| 69 3b 20 6a 20 3a 3d 20 | 6a 2b 64 6a 0d 09 09 09 |i; j := |j+dj....|
|00000f30| 09 45 4e 44 3b 0d 09 09 | 09 55 4e 54 49 4c 20 28 |.END;...|.UNTIL (|
|00000f40| 69 20 3d 20 30 29 20 4f | 52 20 28 69 20 3d 20 6d |i = 0) O|R (i = m|
|00000f50| 2e 6d 2b 31 29 20 4f 52 | 20 28 6a 20 3d 20 30 29 |.m+1) OR| (j = 0)|
|00000f60| 20 4f 52 20 28 6a 20 3d | 20 6d 2e 6d 2b 31 29 20 | OR (j =| m.m+1) |
|00000f70| 4f 52 20 41 74 6f 6d 28 | 6d 2c 20 69 2b 64 69 2c |OR Atom(|m, i+di,|
|00000f80| 20 6a 2b 64 6a 29 3b 0d | 09 09 09 49 46 20 7e 28 | j+dj);.|...IF ~(|
|00000f90| 28 69 20 3d 20 30 29 20 | 4f 52 20 28 69 20 3d 20 |(i = 0) |OR (i = |
|00000fa0| 6d 2e 6d 2b 31 29 20 4f | 52 20 28 6a 20 3d 20 30 |m.m+1) O|R (j = 0|
|00000fb0| 29 20 4f 52 20 28 6a 20 | 3d 20 6d 2e 6d 2b 31 29 |) OR (j |= m.m+1)|
|00000fc0| 29 20 54 48 45 4e 20 69 | 20 3a 3d 20 69 2b 64 69 |) THEN i| := i+di|
|00000fd0| 3b 20 6a 20 3a 3d 20 6a | 2b 64 6a 20 45 4e 44 3b |; j := j|+dj END;|
|00000fe0| 0d 09 09 09 41 64 64 50 | 6f 69 6e 74 28 69 2c 20 |....AddP|oint(i, |
|00000ff0| 6a 29 0d 09 09 45 4e 44 | 0d 09 45 4e 44 20 47 65 |j)...END|..END Ge|
|00001000| 74 50 61 74 68 3b 0d 0d | 09 50 52 4f 43 45 44 55 |tPath;..|.PROCEDU|
|00001010| 52 45 20 4e 65 77 50 75 | 7a 7a 6c 65 20 28 6d 3a |RE NewPu|zzle (m:|
|00001020| 20 4d 6f 64 65 6c 29 3b | 0d 09 09 56 41 52 20 69 | Model);|...VAR i|
|00001030| 2c 20 6a 2c 20 6b 3a 20 | 49 4e 54 45 47 45 52 3b |, j, k: |INTEGER;|
|00001040| 0d 09 42 45 47 49 4e 0d | 09 09 46 4f 52 20 69 20 |..BEGIN.|..FOR i |
|00001050| 3a 3d 20 30 20 54 4f 20 | 6d 2e 6d 2b 31 20 44 4f |:= 0 TO |m.m+1 DO|
|00001060| 20 46 4f 52 20 6a 20 3a | 3d 20 30 20 54 4f 20 6d | FOR j :|= 0 TO m|
|00001070| 2e 6d 2b 31 20 44 4f 20 | 6d 2e 62 6f 61 72 64 5b |.m+1 DO |m.board[|
|00001080| 69 2c 6a 5d 20 3a 3d 20 | 30 20 45 4e 44 20 45 4e |i,j] := |0 END EN|
|00001090| 44 3b 09 09 0d 09 09 6b | 20 3a 3d 20 30 3b 0d 09 |D;.....k| := 0;..|
|000010a0| 09 57 48 49 4c 45 20 6b | 20 3c 20 6d 2e 70 20 44 |.WHILE k| < m.p D|
|000010b0| 4f 0d 09 09 09 69 20 3a | 3d 20 31 20 2b 20 53 48 |O....i :|= 1 + SH|
|000010c0| 4f 52 54 28 45 4e 54 49 | 45 52 28 55 6e 69 52 61 |ORT(ENTI|ER(UniRa|
|000010d0| 6e 64 28 29 2a 6d 2e 6d | 29 29 3b 0d 09 09 09 6a |nd()*m.m|));....j|
|000010e0| 20 3a 3d 20 31 20 2b 20 | 53 48 4f 52 54 28 45 4e | := 1 + |SHORT(EN|
|000010f0| 54 49 45 52 28 55 6e 69 | 52 61 6e 64 28 29 2a 6d |TIER(Uni|Rand()*m|
|00001100| 2e 6d 29 29 3b 0d 09 09 | 09 49 46 20 7e 41 74 6f |.m));...|.IF ~Ato|
|00001110| 6d 28 6d 2c 20 69 2c 20 | 6a 29 20 54 48 45 4e 20 |m(m, i, |j) THEN |
|00001120| 6d 2e 62 6f 61 72 64 5b | 69 2c 6a 5d 20 3a 3d 20 |m.board[|i,j] := |
|00001130| 6d 69 6e 64 65 64 3b 20 | 49 4e 43 28 6b 29 20 45 |minded; |INC(k) E|
|00001140| 4e 44 0d 09 09 45 4e 44 | 0d 09 45 4e 44 20 4e 65 |ND...END|..END Ne|
|00001150| 77 50 75 7a 7a 6c 65 3b | 0d 0d 09 50 52 4f 43 45 |wPuzzle;|...PROCE|
|00001160| 44 55 52 45 20 53 63 6f | 72 65 20 28 6d 3a 20 4d |DURE Sco|re (m: M|
|00001170| 6f 64 65 6c 29 3a 20 49 | 4e 54 45 47 45 52 3b 0d |odel): I|NTEGER;.|
|00001180| 09 09 56 41 52 20 69 2c | 20 6a 2c 20 73 63 6f 72 |..VAR i,| j, scor|
|00001190| 65 2c 20 6e 3a 20 49 4e | 54 45 47 45 52 3b 0d 09 |e, n: IN|TEGER;..|
|000011a0| 42 45 47 49 4e 0d 09 09 | 73 63 6f 72 65 20 3a 3d |BEGIN...|score :=|
|000011b0| 20 30 3b 20 6e 20 3a 3d | 20 30 3b 0d 09 09 46 4f | 0; n :=| 0;...FO|
|000011c0| 52 20 69 20 3a 3d 20 30 | 20 54 4f 20 6d 2e 6d 20 |R i := 0| TO m.m |
|000011d0| 2b 20 31 20 44 4f 0d 09 | 09 09 46 4f 52 20 6a 20 |+ 1 DO..|..FOR j |
|000011e0| 3a 3d 20 30 20 54 4f 20 | 6d 2e 6d 20 2b 20 31 20 |:= 0 TO |m.m + 1 |
|000011f0| 44 4f 0d 09 09 09 09 49 | 46 20 28 69 20 3d 20 30 |DO.....I|F (i = 0|
|00001200| 29 20 4f 52 20 28 6a 20 | 3d 20 30 29 20 4f 52 20 |) OR (j |= 0) OR |
|00001210| 28 69 20 3d 20 6d 2e 6d | 2b 31 29 20 4f 52 20 28 |(i = m.m|+1) OR (|
|00001220| 6a 20 3d 20 6d 2e 6d 2b | 31 29 20 54 48 45 4e 0d |j = m.m+|1) THEN.|
|00001230| 09 09 09 09 09 49 46 20 | 6d 2e 62 6f 61 72 64 5b |.....IF |m.board[|
|00001240| 69 2c 6a 5d 20 23 20 30 | 20 54 48 45 4e 20 49 4e |i,j] # 0| THEN IN|
|00001250| 43 28 73 63 6f 72 65 29 | 20 45 4e 44 0d 09 09 09 |C(score)| END....|
|00001260| 09 45 4c 53 45 0d 09 09 | 09 09 09 49 46 20 4d 61 |.ELSE...|...IF Ma|
|00001270| 72 6b 65 64 28 6d 2c 20 | 69 2c 20 6a 29 20 54 48 |rked(m, |i, j) TH|
|00001280| 45 4e 20 49 4e 43 28 6e | 29 3b 0d 09 09 09 09 09 |EN INC(n|);......|
|00001290| 09 49 46 20 7e 41 74 6f | 6d 28 6d 2c 20 69 2c 20 |.IF ~Ato|m(m, i, |
|000012a0| 6a 29 20 54 48 45 4e 20 | 49 4e 43 28 73 63 6f 72 |j) THEN |INC(scor|
|000012b0| 65 2c 20 35 29 20 45 4e | 44 0d 09 09 09 09 09 45 |e, 5) EN|D......E|
|000012c0| 4e 44 0d 09 09 09 09 45 | 4e 44 0d 09 09 09 45 4e |ND.....E|ND....EN|
|000012d0| 44 0d 09 09 45 4e 44 3b | 0d 09 09 49 46 20 6e 20 |D...END;|...IF n |
|000012e0| 3c 20 6d 2e 70 20 54 48 | 45 4e 20 49 4e 43 28 73 |< m.p TH|EN INC(s|
|000012f0| 63 6f 72 65 2c 20 35 20 | 2a 20 28 6d 2e 70 20 2d |core, 5 |* (m.p -|
|00001300| 20 6e 29 29 20 45 4e 44 | 3b 0d 09 09 52 45 54 55 | n)) END|;...RETU|
|00001310| 52 4e 20 73 63 6f 72 65 | 0d 09 45 4e 44 20 53 63 |RN score|..END Sc|
|00001320| 6f 72 65 3b 0d 0d 09 28 | 2a 20 67 72 61 70 68 69 |ore;...(|* graphi|
|00001330| 63 73 20 70 61 72 74 20 | 2a 29 0d 0d 09 50 52 4f |cs part |*)...PRO|
|00001340| 43 45 44 55 52 45 20 49 | 6e 74 54 6f 53 74 72 69 |CEDURE I|ntToStri|
|00001350| 6e 67 20 28 78 3a 20 4c | 4f 4e 47 49 4e 54 3b 20 |ng (x: L|ONGINT; |
|00001360| 56 41 52 20 73 3a 20 41 | 52 52 41 59 20 4f 46 20 |VAR s: A|RRAY OF |
|00001370| 43 48 41 52 29 3b 0d 09 | 09 56 41 52 20 6a 2c 20 |CHAR);..|.VAR j, |
|00001380| 6b 3a 20 49 4e 54 45 47 | 45 52 3b 20 61 3a 20 41 |k: INTEG|ER; a: A|
|00001390| 52 52 41 59 20 33 32 20 | 4f 46 20 43 48 41 52 3b |RRAY 32 |OF CHAR;|
|000013a0| 0d 09 42 45 47 49 4e 0d | 09 09 6a 20 3a 3d 20 30 |..BEGIN.|..j := 0|
|000013b0| 3b 20 52 45 50 45 41 54 | 20 61 5b 6a 5d 20 3a 3d |; REPEAT| a[j] :=|
|000013c0| 20 43 48 52 28 78 20 4d | 4f 44 20 31 30 20 2b 20 | CHR(x M|OD 10 + |
|000013d0| 4f 52 44 28 22 30 22 29 | 29 3b 20 78 20 3a 3d 20 |ORD("0")|); x := |
|000013e0| 78 20 44 49 56 20 31 30 | 3b 20 49 4e 43 28 6a 29 |x DIV 10|; INC(j)|
|000013f0| 20 55 4e 54 49 4c 20 78 | 20 3d 20 30 3b 0d 09 09 | UNTIL x| = 0;...|
|00001400| 6b 20 3a 3d 20 30 3b 20 | 52 45 50 45 41 54 20 44 |k := 0; |REPEAT D|
|00001410| 45 43 28 6a 29 3b 20 73 | 5b 6b 5d 20 3a 3d 20 61 |EC(j); s|[k] := a|
|00001420| 5b 6a 5d 3b 20 49 4e 43 | 28 6b 29 20 55 4e 54 49 |[j]; INC|(k) UNTI|
|00001430| 4c 20 6a 20 3d 20 30 3b | 0d 09 09 73 5b 6b 5d 20 |L j = 0;|...s[k] |
|00001440| 3a 3d 20 30 58 0d 09 45 | 4e 44 20 49 6e 74 54 6f |:= 0X..E|ND IntTo|
|00001450| 53 74 72 69 6e 67 3b 0d | 0d 09 50 52 4f 43 45 44 |String;.|..PROCED|
|00001460| 55 52 45 20 44 72 61 77 | 53 74 72 69 6e 67 43 65 |URE Draw|StringCe|
|00001470| 6e 74 65 72 65 64 20 28 | 76 3a 20 56 69 65 77 3b |ntered (|v: View;|
|00001480| 20 66 3a 20 50 6f 72 74 | 73 2e 46 72 61 6d 65 3b | f: Port|s.Frame;|
|00001490| 20 78 2c 20 79 3a 20 4c | 4f 4e 47 49 4e 54 3b 20 | x, y: L|ONGINT; |
|000014a0| 73 3a 20 41 52 52 41 59 | 20 4f 46 20 43 48 41 52 |s: ARRAY| OF CHAR|
|000014b0| 29 3b 0d 09 42 45 47 49 | 4e 0d 09 09 66 2e 44 72 |);..BEGI|N...f.Dr|
|000014c0| 61 77 53 74 72 69 6e 67 | 28 78 20 2d 20 76 2e 66 |awString|(x - v.f|
|000014d0| 6f 6e 74 2e 53 74 72 69 | 6e 67 57 69 64 74 68 28 |ont.Stri|ngWidth(|
|000014e0| 73 29 20 44 49 56 20 32 | 2c 20 79 20 2b 20 76 2e |s) DIV 2|, y + v.|
|000014f0| 66 6f 6e 74 2e 61 73 63 | 20 44 49 56 20 32 2c 20 |font.asc| DIV 2, |
|00001500| 50 6f 72 74 73 2e 62 6c | 61 63 6b 2c 20 73 2c 20 |Ports.bl|ack, s, |
|00001510| 76 2e 66 6f 6e 74 29 0d | 09 45 4e 44 20 44 72 61 |v.font).|.END Dra|
|00001520| 77 53 74 72 69 6e 67 43 | 65 6e 74 65 72 65 64 3b |wStringC|entered;|
|00001530| 0d 0d 09 50 52 4f 43 45 | 44 55 52 45 20 47 65 74 |...PROCE|DURE Get|
|00001540| 43 6f 6f 72 64 20 28 76 | 3a 20 56 69 65 77 3b 20 |Coord (v|: View; |
|00001550| 69 2c 20 6a 3a 20 49 4e | 54 45 47 45 52 3b 20 56 |i, j: IN|TEGER; V|
|00001560| 41 52 20 78 2c 20 79 3a | 20 4c 4f 4e 47 49 4e 54 |AR x, y:| LONGINT|
|00001570| 29 3b 0d 09 09 56 41 52 | 20 77 2c 20 68 3a 20 4c |);...VAR| w, h: L|
|00001580| 4f 4e 47 49 4e 54 3b 0d | 09 42 45 47 49 4e 0d 09 |ONGINT;.|.BEGIN..|
|00001590| 09 79 20 3a 3d 20 6a 20 | 2a 20 76 2e 64 20 2b 20 |.y := j |* v.d + |
|000015a0| 76 2e 64 20 44 49 56 20 | 32 20 2b 20 31 3b 0d 09 |v.d DIV |2 + 1;..|
|000015b0| 09 78 20 3a 3d 20 69 20 | 2a 20 76 2e 64 20 2b 20 |.x := i |* v.d + |
|000015c0| 76 2e 64 20 44 49 56 20 | 32 20 2b 20 31 3b 0d 09 |v.d DIV |2 + 1;..|
|000015d0| 09 49 46 20 69 20 3d 20 | 30 20 54 48 45 4e 20 49 |.IF i = |0 THEN I|
|000015e0| 4e 43 28 78 2c 20 76 2e | 64 20 44 49 56 20 32 29 |NC(x, v.|d DIV 2)|
|000015f0| 0d 09 09 45 4c 53 49 46 | 20 69 20 3d 20 76 2e 6d |...ELSIF| i = v.m|
|00001600| 6f 64 2e 6d 2b 31 20 54 | 48 45 4e 20 44 45 43 28 |od.m+1 T|HEN DEC(|
|00001610| 78 2c 20 76 2e 64 20 44 | 49 56 20 32 29 0d 09 09 |x, v.d D|IV 2)...|
|00001620| 45 4c 53 49 46 20 6a 20 | 3d 20 30 20 54 48 45 4e |ELSIF j |= 0 THEN|
|00001630| 20 49 4e 43 28 79 2c 20 | 76 2e 64 20 44 49 56 20 | INC(y, |v.d DIV |
|00001640| 32 29 0d 09 09 45 4c 53 | 49 46 20 6a 20 3d 20 76 |2)...ELS|IF j = v|
|00001650| 2e 6d 6f 64 2e 6d 2b 31 | 20 54 48 45 4e 20 44 45 |.mod.m+1| THEN DE|
|00001660| 43 28 79 2c 20 76 2e 64 | 20 44 49 56 20 32 29 0d |C(y, v.d| DIV 2).|
|00001670| 09 09 45 4e 44 0d 09 45 | 4e 44 20 47 65 74 43 6f |..END..E|ND GetCo|
|00001680| 6f 72 64 3b 0d 0d 09 28 | 2a 20 4d 6f 64 65 6c 20 |ord;...(|* Model |
|00001690| 2a 29 0d 0d 09 50 52 4f | 43 45 44 55 52 45 20 49 |*)...PRO|CEDURE I|
|000016a0| 6e 69 74 20 28 6d 3a 20 | 4d 6f 64 65 6c 29 3b 0d |nit (m: |Model);.|
|000016b0| 09 42 45 47 49 4e 0d 09 | 09 6d 2e 6d 20 3a 3d 20 |.BEGIN..|.m.m := |
|000016c0| 70 61 72 61 2e 62 6f 61 | 72 64 53 69 7a 65 3b 20 |para.boa|rdSize; |
|000016d0| 6d 2e 70 20 3a 3d 20 70 | 61 72 61 2e 6e 72 4f 66 |m.p := p|ara.nrOf|
|000016e0| 41 74 6f 6d 73 3b 0d 09 | 09 4e 45 57 28 6d 2e 62 |Atoms;..|.NEW(m.b|
|000016f0| 6f 61 72 64 2c 20 6d 2e | 6d 2b 32 2c 20 6d 2e 6d |oard, m.|m+2, m.m|
|00001700| 2b 32 29 3b 20 4e 65 77 | 50 75 7a 7a 6c 65 28 6d |+2); New|Puzzle(m|
|00001710| 29 3b 0d 09 09 6d 2e 6e | 20 3a 3d 20 30 3b 20 6d |);...m.n| := 0; m|
|00001720| 2e 73 63 6f 72 65 20 3a | 3d 20 30 3b 20 6d 2e 73 |.score :|= 0; m.s|
|00001730| 68 6f 77 73 6f 6c 20 3a | 3d 20 46 41 4c 53 45 0d |howsol :|= FALSE.|
|00001740| 09 45 4e 44 20 49 6e 69 | 74 3b 0d 0d 09 50 52 4f |.END Ini|t;...PRO|
|00001750| 43 45 44 55 52 45 20 28 | 6d 3a 20 4d 6f 64 65 6c |CEDURE (|m: Model|
|00001760| 29 20 45 78 74 65 72 6e | 61 6c 69 7a 65 20 28 56 |) Extern|alize (V|
|00001770| 41 52 20 77 72 3a 20 53 | 74 6f 72 65 73 2e 57 72 |AR wr: S|tores.Wr|
|00001780| 69 74 65 72 29 3b 0d 09 | 09 56 41 52 20 69 2c 20 |iter);..|.VAR i, |
|00001790| 6a 3a 20 49 4e 54 45 47 | 45 52 3b 0d 09 42 45 47 |j: INTEG|ER;..BEG|
|000017a0| 49 4e 0d 09 09 6d 2e 45 | 78 74 65 72 6e 61 6c 69 |IN...m.E|xternali|
|000017b0| 7a 65 5e 28 77 72 29 3b | 0d 09 09 77 72 2e 57 72 |ze^(wr);|...wr.Wr|
|000017c0| 69 74 65 56 65 72 73 69 | 6f 6e 28 76 65 72 73 69 |iteVersi|on(versi|
|000017d0| 6f 6e 29 3b 0d 0d 09 09 | 77 72 2e 57 72 69 74 65 |on);....|wr.Write|
|000017e0| 49 6e 74 28 6d 2e 6d 29 | 3b 0d 09 09 77 72 2e 57 |Int(m.m)|;...wr.W|
|000017f0| 72 69 74 65 49 6e 74 28 | 6d 2e 70 29 3b 0d 09 09 |riteInt(|m.p);...|
|00001800| 77 72 2e 57 72 69 74 65 | 49 6e 74 28 6d 2e 6e 29 |wr.Write|Int(m.n)|
|00001810| 3b 0d 09 09 77 72 2e 57 | 72 69 74 65 49 6e 74 28 |;...wr.W|riteInt(|
|00001820| 6d 2e 73 63 6f 72 65 29 | 3b 0d 09 09 77 72 2e 57 |m.score)|;...wr.W|
|00001830| 72 69 74 65 42 6f 6f 6c | 28 6d 2e 73 68 6f 77 73 |riteBool|(m.shows|
|00001840| 6f 6c 29 3b 0d 0d 09 09 | 46 4f 52 20 69 20 3a 3d |ol);....|FOR i :=|
|00001850| 20 30 20 54 4f 20 6d 2e | 6d 2b 31 20 44 4f 0d 09 | 0 TO m.|m+1 DO..|
|00001860| 09 09 46 4f 52 20 6a 20 | 3a 3d 20 30 20 54 4f 20 |..FOR j |:= 0 TO |
|00001870| 6d 2e 6d 2b 31 20 44 4f | 0d 09 09 09 09 77 72 2e |m.m+1 DO|.....wr.|
|00001880| 57 72 69 74 65 53 49 6e | 74 28 6d 2e 62 6f 61 72 |WriteSIn|t(m.boar|
|00001890| 64 5b 69 2c 6a 5d 29 0d | 09 09 09 45 4e 44 0d 09 |d[i,j]).|...END..|
|000018a0| 09 45 4e 44 0d 09 45 4e | 44 20 45 78 74 65 72 6e |.END..EN|D Extern|
|000018b0| 61 6c 69 7a 65 3b 0d 0d | 09 50 52 4f 43 45 44 55 |alize;..|.PROCEDU|
|000018c0| 52 45 20 28 6d 3a 20 4d | 6f 64 65 6c 29 20 49 6e |RE (m: M|odel) In|
|000018d0| 74 65 72 6e 61 6c 69 7a | 65 20 28 56 41 52 20 72 |ternaliz|e (VAR r|
|000018e0| 64 3a 20 53 74 6f 72 65 | 73 2e 52 65 61 64 65 72 |d: Store|s.Reader|
|000018f0| 29 3b 0d 09 09 56 41 52 | 20 76 65 72 3a 20 53 48 |);...VAR| ver: SH|
|00001900| 4f 52 54 49 4e 54 3b 20 | 78 30 3a 20 4c 4f 4e 47 |ORTINT; |x0: LONG|
|00001910| 49 4e 54 3b 20 69 2c 20 | 6a 3a 20 49 4e 54 45 47 |INT; i, |j: INTEG|
|00001920| 45 52 3b 0d 09 42 45 47 | 49 4e 0d 09 09 6d 2e 49 |ER;..BEG|IN...m.I|
|00001930| 6e 74 65 72 6e 61 6c 69 | 7a 65 5e 28 72 64 29 3b |nternali|ze^(rd);|
|00001940| 0d 09 09 49 46 20 7e 72 | 64 2e 63 61 6e 63 65 6c |...IF ~r|d.cancel|
|00001950| 6c 65 64 20 54 48 45 4e | 0d 09 09 09 72 64 2e 52 |led THEN|....rd.R|
|00001960| 65 61 64 56 65 72 73 69 | 6f 6e 28 76 65 72 73 69 |eadVersi|on(versi|
|00001970| 6f 6e 2c 20 76 65 72 73 | 69 6f 6e 2c 20 76 65 72 |on, vers|ion, ver|
|00001980| 29 3b 0d 09 09 09 49 46 | 20 7e 72 64 2e 63 61 6e |);....IF| ~rd.can|
|00001990| 63 65 6c 6c 65 64 20 54 | 48 45 4e 0d 0d 09 09 09 |celled T|HEN.....|
|000019a0| 09 72 64 2e 52 65 61 64 | 49 6e 74 28 6d 2e 6d 29 |.rd.Read|Int(m.m)|
|000019b0| 3b 0d 09 09 09 09 72 64 | 2e 52 65 61 64 49 6e 74 |;.....rd|.ReadInt|
|000019c0| 28 6d 2e 70 29 3b 0d 09 | 09 09 09 72 64 2e 52 65 |(m.p);..|...rd.Re|
|000019d0| 61 64 49 6e 74 28 6d 2e | 6e 29 3b 0d 09 09 09 09 |adInt(m.|n);.....|
|000019e0| 72 64 2e 52 65 61 64 49 | 6e 74 28 6d 2e 73 63 6f |rd.ReadI|nt(m.sco|
|000019f0| 72 65 29 3b 0d 09 09 09 | 09 72 64 2e 52 65 61 64 |re);....|.rd.Read|
|00001a00| 42 6f 6f 6c 28 6d 2e 73 | 68 6f 77 73 6f 6c 29 3b |Bool(m.s|howsol);|
|00001a10| 0d 09 09 09 09 4e 45 57 | 28 6d 2e 62 6f 61 72 64 |.....NEW|(m.board|
|00001a20| 2c 20 6d 2e 6d 2b 32 2c | 20 6d 2e 6d 2b 32 29 3b |, m.m+2,| m.m+2);|
|00001a30| 0d 0d 09 09 09 09 46 4f | 52 20 69 20 3a 3d 20 30 |......FO|R i := 0|
|00001a40| 20 54 4f 20 6d 2e 6d 2b | 31 20 44 4f 0d 09 09 09 | TO m.m+|1 DO....|
|00001a50| 09 09 46 4f 52 20 6a 20 | 3a 3d 20 30 20 54 4f 20 |..FOR j |:= 0 TO |
|00001a60| 6d 2e 6d 2b 31 20 44 4f | 0d 09 09 09 09 09 09 72 |m.m+1 DO|.......r|
|00001a70| 64 2e 52 65 61 64 53 49 | 6e 74 28 6d 2e 62 6f 61 |d.ReadSI|nt(m.boa|
|00001a80| 72 64 5b 69 2c 6a 5d 29 | 0d 09 09 09 09 09 45 4e |rd[i,j])|......EN|
|00001a90| 44 0d 09 09 09 09 45 4e | 44 0d 09 09 09 45 4e 44 |D.....EN|D....END|
|00001aa0| 0d 09 09 45 4e 44 0d 09 | 45 4e 44 20 49 6e 74 65 |...END..|END Inte|
|00001ab0| 72 6e 61 6c 69 7a 65 3b | 0d 0d 09 50 52 4f 43 45 |rnalize;|...PROCE|
|00001ac0| 44 55 52 45 20 28 6d 3a | 20 4d 6f 64 65 6c 29 20 |DURE (m:| Model) |
|00001ad0| 43 6f 70 79 41 6c 6c 46 | 72 6f 6d 20 28 73 6f 75 |CopyAllF|rom (sou|
|00001ae0| 72 63 65 3a 20 4d 6f 64 | 65 6c 73 2e 4d 6f 64 65 |rce: Mod|els.Mode|
|00001af0| 6c 29 3b 0d 09 09 56 41 | 52 20 69 2c 20 6a 3a 20 |l);...VA|R i, j: |
|00001b00| 49 4e 54 45 47 45 52 3b | 0d 09 42 45 47 49 4e 0d |INTEGER;|..BEGIN.|
|00001b10| 09 09 57 49 54 48 20 73 | 6f 75 72 63 65 3a 20 4d |..WITH s|ource: M|
|00001b20| 6f 64 65 6c 20 44 4f 0d | 09 09 09 49 6e 69 74 28 |odel DO.|...Init(|
|00001b30| 6d 29 3b 0d 09 09 09 6d | 2e 6d 20 3a 3d 20 73 6f |m);....m|.m := so|
|00001b40| 75 72 63 65 2e 6d 3b 20 | 4e 45 57 28 6d 2e 62 6f |urce.m; |NEW(m.bo|
|00001b50| 61 72 64 2c 20 6d 2e 6d | 2b 32 2c 20 6d 2e 6d 2b |ard, m.m|+2, m.m+|
|00001b60| 32 29 3b 0d 09 09 09 6d | 2e 6e 20 3a 3d 20 73 6f |2);....m|.n := so|
|00001b70| 75 72 63 65 2e 6e 3b 20 | 6d 2e 70 20 3a 3d 20 73 |urce.n; |m.p := s|
|00001b80| 6f 75 72 63 65 2e 70 3b | 0d 09 09 09 6d 2e 73 63 |ource.p;|....m.sc|
|00001b90| 6f 72 65 20 3a 3d 20 73 | 6f 75 72 63 65 2e 73 63 |ore := s|ource.sc|
|00001ba0| 6f 72 65 3b 20 6d 2e 73 | 68 6f 77 73 6f 6c 20 3a |ore; m.s|howsol :|
|00001bb0| 3d 20 73 6f 75 72 63 65 | 2e 73 68 6f 77 73 6f 6c |= source|.showsol|
|00001bc0| 3b 0d 09 09 09 46 4f 52 | 20 69 20 3a 3d 20 30 20 |;....FOR| i := 0 |
|00001bd0| 54 4f 20 6d 2e 6d 2b 31 | 20 44 4f 0d 09 09 09 09 |TO m.m+1| DO.....|
|00001be0| 46 4f 52 20 6a 20 3a 3d | 20 30 20 54 4f 20 6d 2e |FOR j :=| 0 TO m.|
|00001bf0| 6d 2b 31 20 44 4f 20 6d | 2e 62 6f 61 72 64 5b 69 |m+1 DO m|.board[i|
|00001c00| 2c 6a 5d 20 3a 3d 20 73 | 6f 75 72 63 65 2e 62 6f |,j] := s|ource.bo|
|00001c10| 61 72 64 5b 69 2c 6a 5d | 20 45 4e 44 0d 09 09 09 |ard[i,j]| END....|
|00001c20| 45 4e 44 0d 09 09 45 4e | 44 0d 09 45 4e 44 20 43 |END...EN|D..END C|
|00001c30| 6f 70 79 41 6c 6c 46 72 | 6f 6d 3b 0d 0d 09 50 52 |opyAllFr|om;...PR|
|00001c40| 4f 43 45 44 55 52 45 20 | 28 6d 3a 20 4d 6f 64 65 |OCEDURE |(m: Mode|
|00001c50| 6c 29 20 49 6e 69 74 46 | 72 6f 6d 20 28 73 6f 75 |l) InitF|rom (sou|
|00001c60| 72 63 65 3a 20 4d 6f 64 | 65 6c 73 2e 4d 6f 64 65 |rce: Mod|els.Mode|
|00001c70| 6c 29 3b 0d 09 42 45 47 | 49 4e 0d 09 09 49 6e 69 |l);..BEG|IN...Ini|
|00001c80| 74 28 6d 29 0d 09 45 4e | 44 20 49 6e 69 74 46 72 |t(m)..EN|D InitFr|
|00001c90| 6f 6d 3b 0d 0d 09 28 2a | 20 56 69 65 77 20 2a 29 |om;...(*| View *)|
|00001ca0| 0d 0d 09 50 52 4f 43 45 | 44 55 52 45 20 28 76 3a |...PROCE|DURE (v:|
|00001cb0| 20 56 69 65 77 29 20 45 | 78 74 65 72 6e 61 6c 69 | View) E|xternali|
|00001cc0| 7a 65 20 28 56 41 52 20 | 77 72 3a 20 53 74 6f 72 |ze (VAR |wr: Stor|
|00001cd0| 65 73 2e 57 72 69 74 65 | 72 29 3b 0d 09 09 56 41 |es.Write|r);...VA|
|00001ce0| 52 20 69 2c 20 6a 3a 20 | 49 4e 54 45 47 45 52 3b |R i, j: |INTEGER;|
|00001cf0| 0d 09 42 45 47 49 4e 0d | 09 09 76 2e 45 78 74 65 |..BEGIN.|..v.Exte|
|00001d00| 72 6e 61 6c 69 7a 65 5e | 28 77 72 29 3b 0d 09 09 |rnalize^|(wr);...|
|00001d10| 77 72 2e 57 72 69 74 65 | 56 65 72 73 69 6f 6e 28 |wr.Write|Version(|
|00001d20| 76 65 72 73 69 6f 6e 29 | 3b 0d 09 09 77 72 2e 57 |version)|;...wr.W|
|00001d30| 72 69 74 65 49 6e 74 28 | 76 2e 69 29 3b 0d 09 09 |riteInt(|v.i);...|
|00001d40| 77 72 2e 57 72 69 74 65 | 49 6e 74 28 76 2e 6a 29 |wr.Write|Int(v.j)|
|00001d50| 3b 0d 09 09 77 72 2e 57 | 72 69 74 65 53 74 6f 72 |;...wr.W|riteStor|
|00001d60| 65 28 76 2e 6d 6f 64 29 | 09 09 0d 09 45 4e 44 20 |e(v.mod)|....END |
|00001d70| 45 78 74 65 72 6e 61 6c | 69 7a 65 3b 0d 0d 09 50 |External|ize;...P|
|00001d80| 52 4f 43 45 44 55 52 45 | 20 28 76 3a 20 56 69 65 |ROCEDURE| (v: Vie|
|00001d90| 77 29 20 49 6e 74 65 72 | 6e 61 6c 69 7a 65 20 28 |w) Inter|nalize (|
|00001da0| 56 41 52 20 72 64 3a 20 | 53 74 6f 72 65 73 2e 52 |VAR rd: |Stores.R|
|00001db0| 65 61 64 65 72 29 3b 0d | 09 09 56 41 52 20 76 65 |eader);.|..VAR ve|
|00001dc0| 72 3a 20 53 48 4f 52 54 | 49 4e 54 3b 20 73 3a 20 |r: SHORT|INT; s: |
|00001dd0| 53 74 6f 72 65 73 2e 53 | 74 6f 72 65 3b 0d 09 42 |Stores.S|tore;..B|
|00001de0| 45 47 49 4e 0d 09 09 76 | 2e 49 6e 74 65 72 6e 61 |EGIN...v|.Interna|
|00001df0| 6c 69 7a 65 5e 28 72 64 | 29 3b 0d 09 09 49 46 20 |lize^(rd|);...IF |
|00001e00| 7e 72 64 2e 63 61 6e 63 | 65 6c 6c 65 64 20 54 48 |~rd.canc|elled TH|
|00001e10| 45 4e 0d 09 09 09 72 64 | 2e 52 65 61 64 56 65 72 |EN....rd|.ReadVer|
|00001e20| 73 69 6f 6e 28 76 65 72 | 73 69 6f 6e 2c 20 76 65 |sion(ver|sion, ve|
|00001e30| 72 73 69 6f 6e 2c 20 76 | 65 72 29 3b 0d 09 09 09 |rsion, v|er);....|
|00001e40| 49 46 20 7e 72 64 2e 63 | 61 6e 63 65 6c 6c 65 64 |IF ~rd.c|ancelled|
|00001e50| 20 54 48 45 4e 0d 09 09 | 09 09 72 64 2e 52 65 61 | THEN...|..rd.Rea|
|00001e60| 64 49 6e 74 28 76 2e 69 | 29 3b 0d 09 09 09 09 72 |dInt(v.i|);.....r|
|00001e70| 64 2e 52 65 61 64 49 6e | 74 28 76 2e 6a 29 3b 0d |d.ReadIn|t(v.j);.|
|00001e80| 09 09 09 09 72 64 2e 52 | 65 61 64 53 74 6f 72 65 |....rd.R|eadStore|
|00001e90| 28 73 29 3b 20 41 53 53 | 45 52 54 28 73 20 23 20 |(s); ASS|ERT(s # |
|00001ea0| 4e 49 4c 2c 20 31 30 30 | 29 3b 0d 09 09 09 09 49 |NIL, 100|);.....I|
|00001eb0| 46 20 73 20 49 53 20 4d | 6f 64 65 6c 20 54 48 45 |F s IS M|odel THE|
|00001ec0| 4e 0d 09 09 09 09 09 76 | 2e 6d 6f 64 20 3a 3d 20 |N......v|.mod := |
|00001ed0| 73 28 4d 6f 64 65 6c 29 | 0d 09 09 09 09 45 4c 53 |s(Model)|.....ELS|
|00001ee0| 45 0d 09 09 09 09 09 72 | 64 2e 54 75 72 6e 49 6e |E......r|d.TurnIn|
|00001ef0| 74 6f 41 6c 69 65 6e 28 | 53 74 6f 72 65 73 2e 61 |toAlien(|Stores.a|
|00001f00| 6c 69 65 6e 43 6f 6d 70 | 6f 6e 65 6e 74 29 0d 09 |lienComp|onent)..|
|00001f10| 09 09 09 45 4e 44 3b 0d | 09 09 09 09 76 2e 64 20 |...END;.|....v.d |
|00001f20| 3a 3d 20 30 3b 20 0d 09 | 09 09 09 76 2e 66 6f 6e |:= 0; ..|...v.fon|
|00001f30| 74 20 3a 3d 20 4e 49 4c | 0d 09 09 09 45 4e 44 0d |t := NIL|....END.|
|00001f40| 09 09 45 4e 44 0d 09 45 | 4e 44 20 49 6e 74 65 72 |..END..E|ND Inter|
|00001f50| 6e 61 6c 69 7a 65 3b 0d | 0d 09 50 52 4f 43 45 44 |nalize;.|..PROCED|
|00001f60| 55 52 45 20 28 76 3a 20 | 56 69 65 77 29 20 43 6f |URE (v: |View) Co|
|00001f70| 70 79 46 72 6f 6d 20 28 | 73 6f 75 72 63 65 3a 20 |pyFrom (|source: |
|00001f80| 56 69 65 77 73 2e 56 69 | 65 77 29 3b 0d 09 42 45 |Views.Vi|ew);..BE|
|00001f90| 47 49 4e 0d 09 09 76 2e | 43 6f 70 79 46 72 6f 6d |GIN...v.|CopyFrom|
|00001fa0| 5e 28 73 6f 75 72 63 65 | 29 3b 0d 09 09 57 49 54 |^(source|);...WIT|
|00001fb0| 48 20 73 6f 75 72 63 65 | 3a 20 56 69 65 77 20 44 |H source|: View D|
|00001fc0| 4f 0d 09 09 09 76 2e 69 | 20 3a 3d 20 73 6f 75 72 |O....v.i| := sour|
|00001fd0| 63 65 2e 69 3b 20 76 2e | 6a 20 3a 3d 20 73 6f 75 |ce.i; v.|j := sou|
|00001fe0| 72 63 65 2e 6a 3b 20 76 | 2e 64 20 3a 3d 20 73 6f |rce.j; v|.d := so|
|00001ff0| 75 72 63 65 2e 64 3b 20 | 76 2e 66 6f 6e 74 20 3a |urce.d; |v.font :|
|00002000| 3d 20 73 6f 75 72 63 65 | 2e 66 6f 6e 74 0d 09 09 |= source|.font...|
|00002010| 45 4e 44 0d 09 45 4e 44 | 20 43 6f 70 79 46 72 6f |END..END| CopyFro|
|00002020| 6d 3b 0d 0d 09 50 52 4f | 43 45 44 55 52 45 20 28 |m;...PRO|CEDURE (|
|00002030| 76 3a 20 56 69 65 77 29 | 20 49 6e 69 74 4d 6f 64 |v: View)| InitMod|
|00002040| 65 6c 20 28 6d 3a 20 4d | 6f 64 65 6c 73 2e 4d 6f |el (m: M|odels.Mo|
|00002050| 64 65 6c 29 3b 0d 09 42 | 45 47 49 4e 0d 09 09 76 |del);..B|EGIN...v|
|00002060| 2e 6d 6f 64 20 3a 3d 20 | 6d 28 4d 6f 64 65 6c 29 |.mod := |m(Model)|
|00002070| 0d 09 45 4e 44 20 49 6e | 69 74 4d 6f 64 65 6c 3b |..END In|itModel;|
|00002080| 0d 0d 09 50 52 4f 43 45 | 44 55 52 45 20 28 76 3a |...PROCE|DURE (v:|
|00002090| 20 56 69 65 77 29 20 54 | 68 69 73 4d 6f 64 65 6c | View) T|hisModel|
|000020a0| 20 28 29 3a 20 4d 6f 64 | 65 6c 73 2e 4d 6f 64 65 | (): Mod|els.Mode|
|000020b0| 6c 3b 0d 09 42 45 47 49 | 4e 0d 09 09 52 45 54 55 |l;..BEGI|N...RETU|
|000020c0| 52 4e 20 76 2e 6d 6f 64 | 0d 09 45 4e 44 20 54 68 |RN v.mod|..END Th|
|000020d0| 69 73 4d 6f 64 65 6c 3b | 0d 0d 09 50 52 4f 43 45 |isModel;|...PROCE|
|000020e0| 44 55 52 45 20 28 76 3a | 20 56 69 65 77 29 20 52 |DURE (v:| View) R|
|000020f0| 65 73 74 6f 72 65 20 28 | 66 3a 20 56 69 65 77 73 |estore (|f: Views|
|00002100| 2e 46 72 61 6d 65 3b 20 | 6c 2c 20 74 2c 20 72 2c |.Frame; |l, t, r,|
|00002110| 20 62 3a 20 4c 4f 4e 47 | 49 4e 54 29 3b 0d 09 09 | b: LONG|INT);...|
|00002120| 56 41 52 20 77 2c 20 68 | 2c 20 64 2c 20 78 2c 20 |VAR w, h|, d, x, |
|00002130| 79 2c 20 78 31 2c 20 79 | 31 3a 20 4c 4f 4e 47 49 |y, x1, y|1: LONGI|
|00002140| 4e 54 3b 20 69 2c 20 6a | 3a 20 49 4e 54 45 47 45 |NT; i, j|: INTEGE|
|00002150| 52 3b 20 70 3a 20 50 61 | 74 68 3b 20 73 3a 20 41 |R; p: Pa|th; s: A|
|00002160| 52 52 41 59 20 31 36 20 | 4f 46 20 43 48 41 52 3b |RRAY 16 |OF CHAR;|
|00002170| 0d 09 42 45 47 49 4e 0d | 09 09 76 2e 63 6f 6e 74 |..BEGIN.|..v.cont|
|00002180| 65 78 74 2e 47 65 74 53 | 69 7a 65 28 77 2c 20 68 |ext.GetS|ize(w, h|
|00002190| 29 3b 20 64 20 3a 3d 20 | 77 20 44 49 56 20 28 76 |); d := |w DIV (v|
|000021a0| 2e 6d 6f 64 2e 6d 20 2b | 20 32 29 3b 0d 09 09 49 |.mod.m +| 2);...I|
|000021b0| 46 20 28 76 2e 66 6f 6e | 74 20 3d 20 4e 49 4c 29 |F (v.fon|t = NIL)|
|000021c0| 20 4f 52 20 28 76 2e 64 | 20 23 20 64 29 20 54 48 | OR (v.d| # d) TH|
|000021d0| 45 4e 0d 09 09 09 76 2e | 64 20 3a 3d 20 64 3b 20 |EN....v.|d := d; |
|000021e0| 76 2e 66 6f 6e 74 20 3a | 3d 20 46 6f 6e 74 73 2e |v.font :|= Fonts.|
|000021f0| 64 69 72 2e 54 68 69 73 | 28 22 43 68 69 63 61 67 |dir.This|("Chicag|
|00002200| 6f 22 2c 20 64 20 2a 20 | 32 20 44 49 56 20 33 2c |o", d * |2 DIV 3,|
|00002210| 20 7b 7d 2c 20 46 6f 6e | 74 73 2e 6e 6f 72 6d 61 | {}, Fon|ts.norma|
|00002220| 6c 29 0d 09 09 45 4e 44 | 3b 0d 0d 09 09 46 4f 52 |l)...END|;....FOR|
|00002230| 20 69 20 3a 3d 20 31 20 | 54 4f 20 76 2e 6d 6f 64 | i := 1 |TO v.mod|
|00002240| 2e 6d 20 2b 20 31 20 44 | 4f 0d 09 09 09 66 2e 44 |.m + 1 D|O....f.D|
|00002250| 72 61 77 4c 69 6e 65 28 | 64 2c 20 69 20 2a 20 64 |rawLine(|d, i * d|
|00002260| 2c 77 20 2d 20 64 2c 20 | 69 20 2a 20 64 2c 20 66 |,w - d, |i * d, f|
|00002270| 2e 75 6e 69 74 2c 20 30 | 29 3b 0d 09 09 09 66 2e |.unit, 0|);....f.|
|00002280| 44 72 61 77 4c 69 6e 65 | 28 69 20 2a 20 64 2c 20 |DrawLine|(i * d, |
|00002290| 64 2c 20 69 20 2a 20 64 | 2c 77 20 2d 20 64 2c 20 |d, i * d|,w - d, |
|000022a0| 66 2e 75 6e 69 74 2c 20 | 30 29 0d 09 09 45 4e 44 |f.unit, |0)...END|
|000022b0| 3b 0d 09 09 46 4f 52 20 | 69 20 3a 3d 20 30 20 54 |;...FOR |i := 0 T|
|000022c0| 4f 20 76 2e 6d 6f 64 2e | 6d 20 2b 20 31 20 44 4f |O v.mod.|m + 1 DO|
|000022d0| 0d 09 09 09 46 4f 52 20 | 6a 20 3a 3d 20 30 20 54 |....FOR |j := 0 T|
|000022e0| 4f 20 76 2e 6d 6f 64 2e | 6d 20 2b 20 31 20 44 4f |O v.mod.|m + 1 DO|
|000022f0| 0d 09 09 09 09 78 20 3a | 3d 20 69 20 2a 20 64 20 |.....x :|= i * d |
|00002300| 2b 20 64 20 44 49 56 20 | 32 3b 20 79 20 3a 3d 20 |+ d DIV |2; y := |
|00002310| 6a 20 2a 20 64 20 2b 20 | 64 20 44 49 56 20 32 3b |j * d + |d DIV 2;|
|00002320| 0d 0d 09 09 09 09 49 46 | 20 28 69 20 3d 20 30 29 |......IF| (i = 0)|
|00002330| 20 4f 52 20 28 69 20 3d | 20 76 2e 6d 6f 64 2e 6d | OR (i =| v.mod.m|
|00002340| 20 2b 20 31 29 20 4f 52 | 20 28 6a 20 3d 20 30 29 | + 1) OR| (j = 0)|
|00002350| 20 4f 52 20 28 6a 20 3d | 20 76 2e 6d 6f 64 2e 6d | OR (j =| v.mod.m|
|00002360| 20 2b 20 31 29 20 54 48 | 45 4e 0d 09 09 09 09 09 | + 1) TH|EN......|
|00002370| 49 46 20 76 2e 6d 6f 64 | 2e 62 6f 61 72 64 5b 69 |IF v.mod|.board[i|
|00002380| 20 2c 20 6a 5d 20 3d 20 | 61 62 73 6f 72 62 65 64 | , j] = |absorbed|
|00002390| 20 54 48 45 4e 20 44 72 | 61 77 53 74 72 69 6e 67 | THEN Dr|awString|
|000023a0| 43 65 6e 74 65 72 65 64 | 28 76 2c 20 66 2c 20 78 |Centered|(v, f, x|
|000023b0| 2c 20 79 2c 20 22 41 22 | 29 0d 09 09 09 09 09 45 |, y, "A"|)......E|
|000023c0| 4c 53 49 46 20 76 2e 6d | 6f 64 2e 62 6f 61 72 64 |LSIF v.m|od.board|
|000023d0| 5b 69 20 2c 20 6a 5d 20 | 3d 20 72 65 66 6c 65 63 |[i , j] |= reflec|
|000023e0| 74 65 64 20 54 48 45 4e | 20 44 72 61 77 53 74 72 |ted THEN| DrawStr|
|000023f0| 69 6e 67 43 65 6e 74 65 | 72 65 64 28 76 2c 20 66 |ingCente|red(v, f|
|00002400| 2c 20 78 2c 20 79 2c 20 | 22 52 22 29 0d 09 09 09 |, x, y, |"R")....|
|00002410| 09 09 45 4c 53 49 46 20 | 76 2e 6d 6f 64 2e 62 6f |..ELSIF |v.mod.bo|
|00002420| 61 72 64 5b 69 2c 20 6a | 5d 20 3e 20 30 20 54 48 |ard[i, j|] > 0 TH|
|00002430| 45 4e 0d 09 09 09 09 09 | 09 49 6e 74 54 6f 53 74 |EN......|.IntToSt|
|00002440| 72 69 6e 67 28 76 2e 6d | 6f 64 2e 62 6f 61 72 64 |ring(v.m|od.board|
|00002450| 5b 69 2c 20 6a 5d 2c 20 | 73 29 3b 20 44 72 61 77 |[i, j], |s); Draw|
|00002460| 53 74 72 69 6e 67 43 65 | 6e 74 65 72 65 64 28 76 |StringCe|ntered(v|
|00002470| 2c 20 66 2c 20 78 2c 20 | 79 2c 20 73 29 0d 09 09 |, f, x, |y, s)...|
|00002480| 09 09 09 45 4e 44 0d 09 | 09 09 09 45 4c 53 45 0d |...END..|...ELSE.|
|00002490| 09 09 09 09 09 49 46 20 | 4d 61 72 6b 65 64 28 76 |.....IF |Marked(v|
|000024a0| 2e 6d 6f 64 2c 20 69 2c | 20 6a 29 20 54 48 45 4e |.mod, i,| j) THEN|
|000024b0| 20 72 20 3a 3d 20 28 39 | 20 2a 20 64 29 20 44 49 | r := (9| * d) DI|
|000024c0| 56 20 32 30 3b 0d 09 09 | 09 09 09 09 66 2e 44 72 |V 20;...|....f.Dr|
|000024d0| 61 77 4f 76 61 6c 28 78 | 20 2d 20 72 2c 20 79 20 |awOval(x| - r, y |
|000024e0| 2d 20 72 2c 20 78 20 2b | 20 72 2c 20 79 20 2b 20 |- r, x +| r, y + |
|000024f0| 72 2c 20 50 6f 72 74 73 | 2e 66 69 6c 6c 2c 20 50 |r, Ports|.fill, P|
|00002500| 6f 72 74 73 2e 62 6c 61 | 63 6b 29 0d 09 09 09 09 |orts.bla|ck).....|
|00002510| 09 45 4e 44 3b 0d 09 09 | 09 09 09 49 46 20 76 2e |.END;...|...IF v.|
|00002520| 6d 6f 64 2e 73 68 6f 77 | 73 6f 6c 20 26 20 41 74 |mod.show|sol & At|
|00002530| 6f 6d 28 76 2e 6d 6f 64 | 2c 20 69 2c 20 6a 29 20 |om(v.mod|, i, j) |
|00002540| 54 48 45 4e 20 72 20 3a | 3d 20 64 20 44 49 56 20 |THEN r :|= d DIV |
|00002550| 33 3b 0d 09 09 09 09 09 | 09 49 46 20 4d 61 72 6b |3;......|.IF Mark|
|00002560| 65 64 28 76 2e 6d 6f 64 | 2c 20 69 2c 20 6a 29 20 |ed(v.mod|, i, j) |
|00002570| 54 48 45 4e 20 66 2e 44 | 72 61 77 4f 76 61 6c 28 |THEN f.D|rawOval(|
|00002580| 78 20 2d 20 72 2c 20 79 | 20 2d 20 72 2c 20 78 20 |x - r, y| - r, x |
|00002590| 2b 20 72 2c 20 79 20 2b | 20 72 2c 20 50 6f 72 74 |+ r, y +| r, Port|
|000025a0| 73 2e 66 69 6c 6c 2c 20 | 50 6f 72 74 73 2e 77 68 |s.fill, |Ports.wh|
|000025b0| 69 74 65 29 0d 09 09 09 | 09 09 09 45 4c 53 45 20 |ite)....|...ELSE |
|000025c0| 66 2e 44 72 61 77 4f 76 | 61 6c 28 78 20 2d 20 72 |f.DrawOv|al(x - r|
|000025d0| 2c 20 79 20 2d 20 72 2c | 20 78 20 2b 20 72 2c 20 |, y - r,| x + r, |
|000025e0| 79 20 2b 20 72 2c 20 50 | 6f 72 74 73 2e 66 69 6c |y + r, P|orts.fil|
|000025f0| 6c 2c 20 50 6f 72 74 73 | 2e 62 6c 61 63 6b 29 0d |l, Ports|.black).|
|00002600| 09 09 09 09 09 09 45 4e | 44 0d 09 09 09 09 09 45 |......EN|D......E|
|00002610| 4e 44 0d 09 09 09 09 45 | 4e 44 0d 09 09 09 45 4e |ND.....E|ND....EN|
|00002620| 44 0d 09 09 45 4e 44 3b | 0d 09 09 49 46 20 28 76 |D...END;|...IF (v|
|00002630| 2e 69 20 3e 20 30 29 20 | 4f 52 20 28 76 2e 6a 20 |.i > 0) |OR (v.j |
|00002640| 3e 20 30 29 20 54 48 45 | 4e 0d 09 09 09 47 65 74 |> 0) THE|N....Get|
|00002650| 50 61 74 68 28 76 2e 6d | 6f 64 2c 20 76 2e 69 2c |Path(v.m|od, v.i,|
|00002660| 20 76 2e 6a 2c 20 70 29 | 3b 0d 09 09 09 49 46 20 | v.j, p)|;....IF |
|00002670| 70 20 23 20 4e 49 4c 20 | 54 48 45 4e 0d 09 09 09 |p # NIL |THEN....|
|00002680| 09 47 65 74 43 6f 6f 72 | 64 28 76 2c 20 70 2e 69 |.GetCoor|d(v, p.i|
|00002690| 2c 20 70 2e 6a 2c 20 78 | 2c 20 79 29 3b 20 70 20 |, p.j, x|, y); p |
|000026a0| 3a 3d 20 70 2e 6e 65 78 | 74 3b 0d 09 09 09 09 57 |:= p.nex|t;.....W|
|000026b0| 48 49 4c 45 20 70 20 23 | 20 4e 49 4c 20 44 4f 0d |HILE p #| NIL DO.|
|000026c0| 09 09 09 09 09 47 65 74 | 43 6f 6f 72 64 28 76 2c |.....Get|Coord(v,|
|000026d0| 20 70 2e 69 2c 20 70 2e | 6a 2c 20 78 31 2c 20 79 | p.i, p.|j, x1, y|
|000026e0| 31 29 3b 0d 09 09 09 09 | 09 66 2e 44 72 61 77 4c |1);.....|.f.DrawL|
|000026f0| 69 6e 65 28 78 2c 20 79 | 2c 20 78 31 2c 20 79 31 |ine(x, y|, x1, y1|
|00002700| 2c 20 32 20 2a 20 66 2e | 75 6e 69 74 2c 20 30 29 |, 2 * f.|unit, 0)|
|00002710| 3b 20 78 20 3a 3d 20 78 | 31 3b 20 79 20 3a 3d 20 |; x := x|1; y := |
|00002720| 79 31 3b 20 70 20 3a 3d | 20 70 2e 6e 65 78 74 0d |y1; p :=| p.next.|
|00002730| 09 09 09 09 45 4e 44 0d | 09 09 09 45 4e 44 0d 09 |....END.|...END..|
|00002740| 09 45 4e 44 3b 0d 09 09 | 49 6e 74 54 6f 53 74 72 |.END;...|IntToStr|
|00002750| 69 6e 67 28 76 2e 6d 6f | 64 2e 70 2c 20 73 29 3b |ing(v.mo|d.p, s);|
|00002760| 0d 09 09 78 20 3a 3d 20 | 64 3b 20 79 20 3a 3d 20 |...x := |d; y := |
|00002770| 28 76 2e 6d 6f 64 2e 6d | 20 2b 20 32 29 20 2a 20 |(v.mod.m| + 2) * |
|00002780| 64 20 2b 20 28 64 20 2b | 20 76 2e 66 6f 6e 74 2e |d + (d +| v.font.|
|00002790| 61 73 63 29 20 44 49 56 | 20 32 3b 0d 09 09 66 2e |asc) DIV| 2;...f.|
|000027a0| 44 72 61 77 53 74 72 69 | 6e 67 28 78 2c 20 79 2c |DrawStri|ng(x, y,|
|000027b0| 20 50 6f 72 74 73 2e 62 | 6c 61 63 6b 2c 20 22 41 | Ports.b|lack, "A|
|000027c0| 74 6f 6d 73 3a 20 22 2c | 20 76 2e 66 6f 6e 74 29 |toms: ",| v.font)|
|000027d0| 3b 20 20 78 20 3a 3d 20 | 78 20 2b 20 76 2e 66 6f |; x := |x + v.fo|
|000027e0| 6e 74 2e 53 74 72 69 6e | 67 57 69 64 74 68 28 22 |nt.Strin|gWidth("|
|000027f0| 41 74 6f 6d 73 3a 20 22 | 29 3b 0d 09 09 66 2e 44 |Atoms: "|);...f.D|
|00002800| 72 61 77 53 74 72 69 6e | 67 28 78 2c 20 79 2c 20 |rawStrin|g(x, y, |
|00002810| 50 6f 72 74 73 2e 62 6c | 61 63 6b 2c 20 73 2c 20 |Ports.bl|ack, s, |
|00002820| 76 2e 66 6f 6e 74 29 3b | 20 0d 09 09 49 46 20 76 |v.font);| ...IF v|
|00002830| 2e 6d 6f 64 2e 73 68 6f | 77 73 6f 6c 20 54 48 45 |.mod.sho|wsol THE|
|00002840| 4e 20 78 20 3a 3d 20 78 | 20 2b 20 76 2e 66 6f 6e |N x := x| + v.fon|
|00002850| 74 2e 53 74 72 69 6e 67 | 57 69 64 74 68 28 73 29 |t.String|Width(s)|
|00002860| 3b 0d 09 09 09 66 2e 44 | 72 61 77 53 74 72 69 6e |;....f.D|rawStrin|
|00002870| 67 28 78 2c 20 79 2c 20 | 50 6f 72 74 73 2e 62 6c |g(x, y, |Ports.bl|
|00002880| 61 63 6b 2c 20 22 20 20 | 53 63 6f 72 65 3a 20 22 |ack, " |Score: "|
|00002890| 2c 20 76 2e 66 6f 6e 74 | 29 3b 20 78 20 3a 3d 20 |, v.font|); x := |
|000028a0| 78 20 2b 20 76 2e 66 6f | 6e 74 2e 53 74 72 69 6e |x + v.fo|nt.Strin|
|000028b0| 67 57 69 64 74 68 28 22 | 20 20 53 63 6f 72 65 3a |gWidth("| Score:|
|000028c0| 20 22 29 3b 0d 09 09 09 | 49 6e 74 54 6f 53 74 72 | ");....|IntToStr|
|000028d0| 69 6e 67 28 76 2e 6d 6f | 64 2e 73 63 6f 72 65 2c |ing(v.mo|d.score,|
|000028e0| 20 73 29 3b 20 66 2e 44 | 72 61 77 53 74 72 69 6e | s); f.D|rawStrin|
|000028f0| 67 28 78 2c 20 79 2c 20 | 50 6f 72 74 73 2e 62 6c |g(x, y, |Ports.bl|
|00002900| 61 63 6b 2c 20 73 2c 20 | 76 2e 66 6f 6e 74 29 0d |ack, s, |v.font).|
|00002910| 09 09 45 4e 44 0d 09 45 | 4e 44 20 52 65 73 74 6f |..END..E|ND Resto|
|00002920| 72 65 3b 0d 0d 09 50 52 | 4f 43 45 44 55 52 45 20 |re;...PR|OCEDURE |
|00002930| 54 72 61 63 6b 20 28 76 | 3a 20 56 69 65 77 3b 20 |Track (v|: View; |
|00002940| 66 3a 20 56 69 65 77 73 | 2e 46 72 61 6d 65 3b 20 |f: Views|.Frame; |
|00002950| 78 2c 20 79 3a 20 4c 4f | 4e 47 49 4e 54 3b 20 62 |x, y: LO|NGINT; b|
|00002960| 75 74 74 6f 6e 73 3a 20 | 53 45 54 29 3b 0d 09 09 |uttons: |SET);...|
|00002970| 56 41 52 20 69 2c 20 6a | 3a 20 49 4e 54 45 47 45 |VAR i, j|: INTEGE|
|00002980| 52 3b 20 77 2c 20 68 3a | 20 4c 4f 4e 47 49 4e 54 |R; w, h:| LONGINT|
|00002990| 3b 20 6d 73 67 3a 20 55 | 70 64 61 74 65 4d 73 67 |; msg: U|pdateMsg|
|000029a0| 3b 20 70 3a 20 50 61 74 | 68 3b 0d 09 42 45 47 49 |; p: Pat|h;..BEGI|
|000029b0| 4e 0d 09 09 69 20 3a 3d | 20 53 48 4f 52 54 28 78 |N...i :=| SHORT(x|
|000029c0| 20 44 49 56 20 76 2e 64 | 29 3b 20 6a 20 3a 3d 20 | DIV v.d|); j := |
|000029d0| 53 48 4f 52 54 28 79 20 | 44 49 56 20 76 2e 64 29 |SHORT(y |DIV v.d)|
|000029e0| 3b 0d 09 09 49 46 20 28 | 69 20 3e 20 30 29 20 26 |;...IF (|i > 0) &|
|000029f0| 20 28 69 20 3c 3d 20 76 | 2e 6d 6f 64 2e 6d 29 20 | (i <= v|.mod.m) |
|00002a00| 26 20 28 6a 20 3e 20 30 | 29 20 26 20 28 6a 20 3c |& (j > 0|) & (j <|
|00002a10| 3d 20 76 2e 6d 6f 64 2e | 6d 29 20 54 48 45 4e 09 |= v.mod.|m) THEN.|
|00002a20| 28 2a 20 69 6e 73 69 64 | 65 20 2a 29 0d 09 09 09 |(* insid|e *)....|
|00002a30| 49 46 20 4d 61 72 6b 65 | 64 28 76 2e 6d 6f 64 2c |IF Marke|d(v.mod,|
|00002a40| 20 69 2c 20 6a 29 20 54 | 48 45 4e 20 49 4e 43 28 | i, j) T|HEN INC(|
|00002a50| 76 2e 6d 6f 64 2e 62 6f | 61 72 64 5b 69 2c 20 6a |v.mod.bo|ard[i, j|
|00002a60| 5d 2c 20 34 29 0d 09 09 | 09 45 4c 53 45 20 44 45 |], 4)...|.ELSE DE|
|00002a70| 43 28 76 2e 6d 6f 64 2e | 62 6f 61 72 64 5b 69 2c |C(v.mod.|board[i,|
|00002a80| 20 6a 5d 2c 20 34 29 20 | 0d 09 09 09 45 4e 44 0d | j], 4) |....END.|
|00002a90| 09 09 45 4c 53 49 46 20 | 28 28 69 20 3d 20 30 29 |..ELSIF |((i = 0)|
|00002aa0| 20 4f 52 20 28 69 20 3d | 20 76 2e 6d 6f 64 2e 6d | OR (i =| v.mod.m|
|00002ab0| 20 2b 20 31 29 29 20 26 | 20 28 6a 20 3e 20 30 29 | + 1)) &| (j > 0)|
|00002ac0| 20 26 20 28 6a 20 3c 3d | 20 76 2e 6d 6f 64 2e 6d | & (j <=| v.mod.m|
|00002ad0| 29 0d 09 09 4f 52 20 28 | 28 6a 20 3d 20 30 29 20 |)...OR (|(j = 0) |
|00002ae0| 4f 52 20 28 6a 20 20 3d | 20 76 2e 6d 6f 64 2e 6d |OR (j =| v.mod.m|
|00002af0| 20 2b 20 31 29 29 20 26 | 20 28 69 20 3e 20 30 29 | + 1)) &| (i > 0)|
|00002b00| 20 26 20 28 69 20 3c 3d | 20 76 2e 6d 6f 64 2e 6d | & (i <=| v.mod.m|
|00002b10| 29 20 54 48 45 4e 0d 09 | 09 09 49 46 20 76 2e 6d |) THEN..|..IF v.m|
|00002b20| 6f 64 2e 62 6f 61 72 64 | 5b 69 2c 20 6a 5d 20 3d |od.board|[i, j] =|
|00002b30| 20 30 20 54 48 45 4e 20 | 53 68 6f 6f 74 28 76 2e | 0 THEN |Shoot(v.|
|00002b40| 6d 6f 64 2c 20 69 2c 20 | 6a 29 20 45 4e 44 3b 0d |mod, i, |j) END;.|
|00002b50| 09 09 09 49 46 20 76 2e | 6d 6f 64 2e 73 68 6f 77 |...IF v.|mod.show|
|00002b60| 73 6f 6c 20 54 48 45 4e | 0d 09 09 09 09 49 46 20 |sol THEN|.....IF |
|00002b70| 43 6f 6e 74 72 6f 6c 6c | 65 72 73 2e 6d 6f 64 69 |Controll|ers.modi|
|00002b80| 66 79 20 49 4e 20 62 75 | 74 74 6f 6e 73 20 54 48 |fy IN bu|ttons TH|
|00002b90| 45 4e 20 76 2e 69 20 3a | 3d 20 69 3b 20 76 2e 6a |EN v.i :|= i; v.j|
|00002ba0| 20 3a 3d 20 6a 20 45 4c | 53 45 20 76 2e 69 20 3a | := j EL|SE v.i :|
|00002bb0| 3d 20 30 3b 20 76 2e 6a | 20 3a 3d 20 30 20 45 4e |= 0; v.j| := 0 EN|
|00002bc0| 44 0d 09 09 09 45 4e 44 | 0d 09 09 45 4e 44 3b 0d |D....END|...END;.|
|00002bd0| 09 09 4d 6f 64 65 6c 73 | 2e 42 72 6f 61 64 63 61 |..Models|.Broadca|
|00002be0| 73 74 28 76 2e 6d 6f 64 | 2c 20 6d 73 67 29 0d 09 |st(v.mod|, msg)..|
|00002bf0| 45 4e 44 20 54 72 61 63 | 6b 3b 0d 0d 09 50 52 4f |END Trac|k;...PRO|
|00002c00| 43 45 44 55 52 45 20 28 | 76 3a 20 56 69 65 77 29 |CEDURE (|v: View)|
|00002c10| 20 48 61 6e 64 6c 65 4d | 6f 64 65 6c 4d 73 67 20 | HandleM|odelMsg |
|00002c20| 28 56 41 52 20 6d 73 67 | 3a 20 4d 6f 64 65 6c 73 |(VAR msg|: Models|
|00002c30| 2e 4d 65 73 73 61 67 65 | 29 3b 0d 09 09 56 41 52 |.Message|);...VAR|
|00002c40| 20 77 2c 20 68 3a 20 4c | 4f 4e 47 49 4e 54 3b 0d | w, h: L|ONGINT;.|
|00002c50| 09 42 45 47 49 4e 0d 09 | 09 57 49 54 48 20 6d 73 |.BEGIN..|.WITH ms|
|00002c60| 67 3a 20 55 70 64 61 74 | 65 4d 73 67 20 44 4f 0d |g: Updat|eMsg DO.|
|00002c70| 09 09 09 49 46 20 7e 76 | 2e 6d 6f 64 2e 73 68 6f |...IF ~v|.mod.sho|
|00002c80| 77 73 6f 6c 20 54 48 45 | 4e 20 76 2e 69 20 3a 3d |wsol THE|N v.i :=|
|00002c90| 20 30 3b 20 76 2e 6a 20 | 3a 3d 20 30 20 45 4e 44 | 0; v.j |:= 0 END|
|00002ca0| 3b 09 28 2a 20 61 64 6a | 75 73 74 20 76 69 65 77 |;.(* adj|ust view|
|00002cb0| 20 74 6f 20 63 68 61 6e | 67 65 20 6f 66 20 6d 6f | to chan|ge of mo|
|00002cc0| 64 65 6c 20 2a 29 0d 09 | 09 09 76 2e 63 6f 6e 74 |del *)..|..v.cont|
|00002cd0| 65 78 74 2e 47 65 74 53 | 69 7a 65 28 77 2c 20 68 |ext.GetS|ize(w, h|
|00002ce0| 29 3b 20 56 69 65 77 73 | 2e 55 70 64 61 74 65 49 |); Views|.UpdateI|
|00002cf0| 6e 28 76 2c 20 30 2c 20 | 30 2c 20 77 2c 20 68 2c |n(v, 0, |0, w, h,|
|00002d00| 20 20 56 69 65 77 73 2e | 6b 65 65 70 46 72 61 6d | Views.|keepFram|
|00002d10| 65 73 29 0d 09 09 45 4c | 53 45 0d 09 09 45 4e 44 |es)...EL|SE...END|
|00002d20| 0d 09 45 4e 44 20 48 61 | 6e 64 6c 65 4d 6f 64 65 |..END Ha|ndleMode|
|00002d30| 6c 4d 73 67 3b 0d 0d 09 | 50 52 4f 43 45 44 55 52 |lMsg;...|PROCEDUR|
|00002d40| 45 20 28 76 3a 20 56 69 | 65 77 29 20 48 61 6e 64 |E (v: Vi|ew) Hand|
|00002d50| 6c 65 43 74 72 6c 4d 73 | 67 20 28 66 3a 20 56 69 |leCtrlMs|g (f: Vi|
|00002d60| 65 77 73 2e 46 72 61 6d | 65 3b 20 56 41 52 20 6d |ews.Fram|e; VAR m|
|00002d70| 73 67 3a 20 43 6f 6e 74 | 72 6f 6c 6c 65 72 73 2e |sg: Cont|rollers.|
|00002d80| 4d 65 73 73 61 67 65 3b | 0d 09 09 09 09 09 09 09 |Message;|........|
|00002d90| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 56 41 52 |........|.....VAR|
|00002da0| 20 66 6f 63 75 73 3a 20 | 56 69 65 77 73 2e 56 69 | focus: |Views.Vi|
|00002db0| 65 77 29 3b 0d 09 42 45 | 47 49 4e 0d 09 09 57 49 |ew);..BE|GIN...WI|
|00002dc0| 54 48 20 6d 73 67 3a 20 | 43 6f 6e 74 72 6f 6c 6c |TH msg: |Controll|
|00002dd0| 65 72 73 2e 54 72 61 63 | 6b 4d 73 67 20 44 4f 0d |ers.Trac|kMsg DO.|
|00002de0| 09 09 09 56 69 65 77 73 | 2e 42 65 67 69 6e 4d 6f |...Views|.BeginMo|
|00002df0| 64 69 66 69 63 61 74 69 | 6f 6e 28 76 29 3b 0d 09 |dificati|on(v);..|
|00002e00| 09 09 54 72 61 63 6b 28 | 76 2c 20 66 2c 20 6d 73 |..Track(|v, f, ms|
|00002e10| 67 2e 78 2c 20 6d 73 67 | 2e 79 2c 20 6d 73 67 2e |g.x, msg|.y, msg.|
|00002e20| 6d 6f 64 69 66 69 65 72 | 73 29 3b 0d 09 09 09 56 |modifier|s);....V|
|00002e30| 69 65 77 73 2e 45 6e 64 | 4d 6f 64 69 66 69 63 61 |iews.End|Modifica|
|00002e40| 74 69 6f 6e 28 76 29 0d | 09 09 7c 20 6d 73 67 3a |tion(v).|..| msg:|
|00002e50| 20 43 6f 6e 74 72 6f 6c | 6c 65 72 73 2e 50 6f 6c | Control|lers.Pol|
|00002e60| 6c 4f 70 73 4d 73 67 20 | 44 4f 0d 09 09 09 6d 73 |lOpsMsg |DO....ms|
|00002e70| 67 2e 74 79 70 65 20 3a | 3d 20 22 4f 62 78 42 6c |g.type :|= "ObxBl|
|00002e80| 61 63 6b 42 6f 78 2e 56 | 69 65 77 44 65 73 63 22 |ackBox.V|iewDesc"|
|00002e90| 0d 09 09 45 4c 53 45 0d | 09 09 45 4e 44 0d 09 45 |...ELSE.|..END..E|
|00002ea0| 4e 44 20 48 61 6e 64 6c | 65 43 74 72 6c 4d 73 67 |ND Handl|eCtrlMsg|
|00002eb0| 3b 0d 0d 09 50 52 4f 43 | 45 44 55 52 45 20 28 76 |;...PROC|EDURE (v|
|00002ec0| 3a 20 56 69 65 77 29 20 | 48 61 6e 64 6c 65 50 72 |: View) |HandlePr|
|00002ed0| 6f 70 4d 73 67 20 28 56 | 41 52 20 6d 73 67 3a 20 |opMsg (V|AR msg: |
|00002ee0| 50 72 6f 70 65 72 74 69 | 65 73 2e 4d 65 73 73 61 |Properti|es.Messa|
|00002ef0| 67 65 29 3b 0d 09 42 45 | 47 49 4e 0d 09 09 57 49 |ge);..BE|GIN...WI|
|00002f00| 54 48 20 6d 73 67 3a 20 | 50 72 6f 70 65 72 74 69 |TH msg: |Properti|
|00002f10| 65 73 2e 53 69 7a 65 50 | 72 65 66 20 44 4f 0d 09 |es.SizeP|ref DO..|
|00002f20| 09 09 49 46 20 28 6d 73 | 67 2e 77 20 3e 20 56 69 |..IF (ms|g.w > Vi|
|00002f30| 65 77 73 2e 75 6e 64 65 | 66 69 6e 65 64 29 20 26 |ews.unde|fined) &|
|00002f40| 20 28 6d 73 67 2e 68 20 | 3e 20 56 69 65 77 73 2e | (msg.h |> Views.|
|00002f50| 75 6e 64 65 66 69 6e 65 | 64 29 20 54 48 45 4e 0d |undefine|d) THEN.|
|00002f60| 09 09 09 09 50 72 6f 70 | 65 72 74 69 65 73 2e 50 |....Prop|erties.P|
|00002f70| 72 6f 70 6f 72 74 69 6f | 6e 61 6c 43 6f 6e 73 74 |roportio|nalConst|
|00002f80| 72 61 69 6e 74 28 76 2e | 6d 6f 64 2e 6d 2c 20 76 |raint(v.|mod.m, v|
|00002f90| 2e 6d 6f 64 2e 6d 20 2b | 20 31 2c 20 6d 73 67 2e |.mod.m +| 1, msg.|
|00002fa0| 66 69 78 65 64 57 2c 20 | 6d 73 67 2e 66 69 78 65 |fixedW, |msg.fixe|
|00002fb0| 64 48 2c 20 6d 73 67 2e | 77 2c 20 6d 73 67 2e 68 |dH, msg.|w, msg.h|
|00002fc0| 29 0d 09 09 09 45 4c 53 | 45 0d 09 09 09 09 6d 73 |)....ELS|E.....ms|
|00002fd0| 67 2e 77 20 3a 3d 20 31 | 30 30 20 2a 20 50 6f 72 |g.w := 1|00 * Por|
|00002fe0| 74 73 2e 6d 6d 3b 20 6d | 73 67 2e 68 20 3a 3d 20 |ts.mm; m|sg.h := |
|00002ff0| 6d 73 67 2e 77 20 2a 20 | 28 76 2e 6d 6f 64 2e 6d |msg.w * |(v.mod.m|
|00003000| 20 2b 20 31 29 20 44 49 | 56 20 76 2e 6d 6f 64 2e | + 1) DI|V v.mod.|
|00003010| 6d 3b 0d 09 09 09 45 4e | 44 3b 0d 09 09 7c 20 6d |m;....EN|D;...| m|
|00003020| 73 67 3a 20 50 72 6f 70 | 65 72 74 69 65 73 2e 46 |sg: Prop|erties.F|
|00003030| 6f 63 75 73 50 72 65 66 | 20 44 4f 0d 09 09 09 6d |ocusPref| DO....m|
|00003040| 73 67 2e 73 65 74 46 6f | 63 75 73 20 3a 3d 20 54 |sg.setFo|cus := T|
|00003050| 52 55 45 0d 09 09 45 4c | 53 45 0d 09 09 45 4e 44 |RUE...EL|SE...END|
|00003060| 0d 09 45 4e 44 20 48 61 | 6e 64 6c 65 50 72 6f 70 |..END Ha|ndleProp|
|00003070| 4d 73 67 3b 0d 0d 09 28 | 2a 20 63 6f 6d 6d 61 6e |Msg;...(|* comman|
|00003080| 64 73 20 2a 29 0d 0d 09 | 50 52 4f 43 45 44 55 52 |ds *)...|PROCEDUR|
|00003090| 45 20 44 65 70 6f 73 69 | 74 2a 3b 0d 09 09 56 41 |E Deposi|t*;...VA|
|000030a0| 52 20 76 3a 20 56 69 65 | 77 3b 20 6d 3a 20 4d 6f |R v: Vie|w; m: Mo|
|000030b0| 64 65 6c 3b 0d 09 42 45 | 47 49 4e 0d 09 09 4e 45 |del;..BE|GIN...NE|
|000030c0| 57 28 6d 29 3b 20 49 6e | 69 74 28 6d 29 3b 0d 09 |W(m); In|it(m);..|
|000030d0| 09 4e 45 57 28 76 29 3b | 20 76 2e 49 6e 69 74 4d |.NEW(v);| v.InitM|
|000030e0| 6f 64 65 6c 28 6d 29 3b | 0d 09 09 56 69 65 77 73 |odel(m);|...Views|
|000030f0| 2e 44 65 70 6f 73 69 74 | 28 76 29 0d 09 45 4e 44 |.Deposit|(v)..END|
|00003100| 20 44 65 70 6f 73 69 74 | 3b 0d 0d 09 50 52 4f 43 | Deposit|;...PROC|
|00003110| 45 44 55 52 45 20 53 68 | 6f 77 53 6f 6c 75 74 69 |EDURE Sh|owSoluti|
|00003120| 6f 6e 2a 3b 0d 09 09 56 | 41 52 20 76 20 3a 20 56 |on*;...V|AR v : V|
|00003130| 69 65 77 73 2e 56 69 65 | 77 3b 20 6d 73 67 3a 20 |iews.Vie|w; msg: |
|00003140| 55 70 64 61 74 65 4d 73 | 67 3b 0d 09 42 45 47 49 |UpdateMs|g;..BEGI|
|00003150| 4e 0d 09 09 76 20 3a 3d | 20 43 6f 6e 74 72 6f 6c |N...v :=| Control|
|00003160| 6c 65 72 73 2e 46 6f 63 | 75 73 56 69 65 77 28 29 |lers.Foc|usView()|
|00003170| 3b 0d 09 09 49 46 20 76 | 20 23 20 4e 49 4c 20 54 |;...IF v| # NIL T|
|00003180| 48 45 4e 0d 09 09 09 57 | 49 54 48 20 76 3a 20 56 |HEN....W|ITH v: V|
|00003190| 69 65 77 20 44 4f 0d 09 | 09 09 09 56 69 65 77 73 |iew DO..|...Views|
|000031a0| 2e 42 65 67 69 6e 4d 6f | 64 69 66 69 63 61 74 69 |.BeginMo|dificati|
|000031b0| 6f 6e 28 76 29 3b 0d 09 | 09 09 09 76 2e 6d 6f 64 |on(v);..|...v.mod|
|000031c0| 2e 73 68 6f 77 73 6f 6c | 20 3a 3d 20 54 52 55 45 |.showsol| := TRUE|
|000031d0| 3b 20 76 2e 6d 6f 64 2e | 73 63 6f 72 65 20 3a 3d |; v.mod.|score :=|
|000031e0| 20 53 63 6f 72 65 28 76 | 2e 6d 6f 64 29 3b 0d 09 | Score(v|.mod);..|
|000031f0| 09 09 09 4d 6f 64 65 6c | 73 2e 42 72 6f 61 64 63 |...Model|s.Broadc|
|00003200| 61 73 74 28 76 2e 6d 6f | 64 2c 20 6d 73 67 29 3b |ast(v.mo|d, msg);|
|00003210| 0d 09 09 09 09 56 69 65 | 77 73 2e 45 6e 64 4d 6f |.....Vie|ws.EndMo|
|00003220| 64 69 66 69 63 61 74 69 | 6f 6e 28 76 29 0d 09 09 |dificati|on(v)...|
|00003230| 09 45 4e 44 0d 09 09 45 | 4e 44 0d 09 45 4e 44 20 |.END...E|ND..END |
|00003240| 53 68 6f 77 53 6f 6c 75 | 74 69 6f 6e 3b 0d 0d 09 |ShowSolu|tion;...|
|00003250| 50 52 4f 43 45 44 55 52 | 45 20 53 68 6f 77 53 6f |PROCEDUR|E ShowSo|
|00003260| 6c 75 74 69 6f 6e 47 75 | 61 72 64 2a 20 28 56 41 |lutionGu|ard* (VA|
|00003270| 52 20 70 61 72 3a 20 44 | 69 61 6c 6f 67 2e 50 61 |R par: D|ialog.Pa|
|00003280| 72 29 3b 0d 09 09 56 41 | 52 20 76 3a 20 56 69 65 |r);...VA|R v: Vie|
|00003290| 77 73 2e 56 69 65 77 3b | 0d 09 42 45 47 49 4e 0d |ws.View;|..BEGIN.|
|000032a0| 09 09 76 20 3a 3d 20 43 | 6f 6e 74 72 6f 6c 6c 65 |..v := C|ontrolle|
|000032b0| 72 73 2e 46 6f 63 75 73 | 56 69 65 77 28 29 3b 0d |rs.Focus|View();.|
|000032c0| 09 09 70 61 72 2e 64 69 | 73 61 62 6c 65 64 20 3a |..par.di|sabled :|
|000032d0| 3d 20 28 76 20 3d 20 4e | 49 4c 29 20 4f 52 20 7e |= (v = N|IL) OR ~|
|000032e0| 28 76 20 49 53 20 56 69 | 65 77 29 20 4f 52 20 76 |(v IS Vi|ew) OR v|
|000032f0| 28 56 69 65 77 29 2e 6d | 6f 64 2e 73 68 6f 77 73 |(View).m|od.shows|
|00003300| 6f 6c 0d 09 45 4e 44 20 | 53 68 6f 77 53 6f 6c 75 |ol..END |ShowSolu|
|00003310| 74 69 6f 6e 47 75 61 72 | 64 3b 0d 0d 09 50 52 4f |tionGuar|d;...PRO|
|00003320| 43 45 44 55 52 45 20 4e | 65 77 2a 3b 0d 09 09 56 |CEDURE N|ew*;...V|
|00003330| 41 52 20 76 3a 20 56 69 | 65 77 73 2e 56 69 65 77 |AR v: Vi|ews.View|
|00003340| 3b 20 6d 73 67 3a 20 55 | 70 64 61 74 65 4d 73 67 |; msg: U|pdateMsg|
|00003350| 3b 0d 09 42 45 47 49 4e | 0d 09 09 76 20 3a 3d 20 |;..BEGIN|...v := |
|00003360| 43 6f 6e 74 72 6f 6c 6c | 65 72 73 2e 46 6f 63 75 |Controll|ers.Focu|
|00003370| 73 56 69 65 77 28 29 3b | 0d 09 09 49 46 20 76 20 |sView();|...IF v |
|00003380| 23 20 4e 49 4c 20 54 48 | 45 4e 0d 09 09 09 57 49 |# NIL TH|EN....WI|
|00003390| 54 48 20 76 3a 20 56 69 | 65 77 20 44 4f 0d 09 09 |TH v: Vi|ew DO...|
|000033a0| 09 09 56 69 65 77 73 2e | 42 65 67 69 6e 4d 6f 64 |..Views.|BeginMod|
|000033b0| 69 66 69 63 61 74 69 6f | 6e 28 76 29 3b 0d 09 09 |ificatio|n(v);...|
|000033c0| 09 09 4e 65 77 50 75 7a | 7a 6c 65 28 76 2e 6d 6f |..NewPuz|zle(v.mo|
|000033d0| 64 29 3b 0d 09 09 09 09 | 76 2e 6d 6f 64 2e 6e 20 |d);.....|v.mod.n |
|000033e0| 3a 3d 20 30 3b 20 76 2e | 6d 6f 64 2e 73 63 6f 72 |:= 0; v.|mod.scor|
|000033f0| 65 20 3a 3d 20 30 3b 20 | 76 2e 6d 6f 64 2e 73 68 |e := 0; |v.mod.sh|
|00003400| 6f 77 73 6f 6c 20 3a 3d | 20 46 41 4c 53 45 3b 0d |owsol :=| FALSE;.|
|00003410| 09 09 09 09 76 2e 69 20 | 3a 3d 20 30 3b 20 76 2e |....v.i |:= 0; v.|
|00003420| 6a 20 3a 3d 20 30 3b 0d | 09 09 09 09 4d 6f 64 65 |j := 0;.|....Mode|
|00003430| 6c 73 2e 42 72 6f 61 64 | 63 61 73 74 28 76 2e 6d |ls.Broad|cast(v.m|
|00003440| 6f 64 2c 20 6d 73 67 29 | 3b 0d 09 09 09 09 56 69 |od, msg)|;.....Vi|
|00003450| 65 77 73 2e 45 6e 64 4d | 6f 64 69 66 69 63 61 74 |ews.EndM|odificat|
|00003460| 69 6f 6e 28 76 29 0d 09 | 09 09 45 4e 44 0d 09 09 |ion(v)..|..END...|
|00003470| 45 4e 44 09 09 0d 09 45 | 4e 44 20 4e 65 77 3b 0d |END....E|ND New;.|
|00003480| 0d 09 50 52 4f 43 45 44 | 55 52 45 20 53 65 74 2a |..PROCED|URE Set*|
|00003490| 3b 0d 09 09 56 41 52 20 | 76 20 3a 20 56 69 65 77 |;...VAR |v : View|
|000034a0| 73 2e 56 69 65 77 3b 20 | 6d 73 67 3a 20 55 70 64 |s.View; |msg: Upd|
|000034b0| 61 74 65 4d 73 67 3b 20 | 69 2c 20 6a 3a 20 49 4e |ateMsg; |i, j: IN|
|000034c0| 54 45 47 45 52 3b 0d 09 | 42 45 47 49 4e 0d 09 09 |TEGER;..|BEGIN...|
|000034d0| 76 20 3a 3d 20 43 6f 6e | 74 72 6f 6c 6c 65 72 73 |v := Con|trollers|
|000034e0| 2e 46 6f 63 75 73 56 69 | 65 77 28 29 3b 0d 09 09 |.FocusVi|ew();...|
|000034f0| 49 46 20 76 20 23 20 4e | 49 4c 20 54 48 45 4e 0d |IF v # N|IL THEN.|
|00003500| 09 09 09 57 49 54 48 20 | 76 3a 20 56 69 65 77 20 |...WITH |v: View |
|00003510| 44 4f 0d 09 09 09 09 56 | 69 65 77 73 2e 42 65 67 |DO.....V|iews.Beg|
|00003520| 69 6e 4d 6f 64 69 66 69 | 63 61 74 69 6f 6e 28 76 |inModifi|cation(v|
|00003530| 29 3b 0d 09 09 09 09 76 | 2e 6d 6f 64 2e 70 20 3a |);.....v|.mod.p :|
|00003540| 3d 20 30 3b 0d 09 09 09 | 09 46 4f 52 20 69 20 3a |= 0;....|.FOR i :|
|00003550| 3d 20 30 20 54 4f 20 76 | 2e 6d 6f 64 2e 6d 20 2b |= 0 TO v|.mod.m +|
|00003560| 20 31 20 44 4f 0d 09 09 | 09 09 09 46 4f 52 20 6a | 1 DO...|...FOR j|
|00003570| 20 3a 3d 20 30 20 54 4f | 20 76 2e 6d 6f 64 2e 6d | := 0 TO| v.mod.m|
|00003580| 20 2b 20 31 20 44 4f 0d | 09 09 09 09 09 09 49 46 | + 1 DO.|......IF|
|00003590| 20 4d 61 72 6b 65 64 28 | 76 2e 6d 6f 64 2c 20 69 | Marked(|v.mod, i|
|000035a0| 2c 20 6a 29 20 54 48 45 | 4e 20 49 4e 43 28 76 2e |, j) THE|N INC(v.|
|000035b0| 6d 6f 64 2e 70 29 3b 20 | 76 2e 6d 6f 64 2e 62 6f |mod.p); |v.mod.bo|
|000035c0| 61 72 64 5b 69 2c 6a 5d | 20 3a 3d 20 6d 69 6e 64 |ard[i,j]| := mind|
|000035d0| 65 64 0d 09 09 09 09 09 | 09 45 4c 53 45 20 76 2e |ed......|.ELSE v.|
|000035e0| 6d 6f 64 2e 62 6f 61 72 | 64 5b 69 2c 6a 5d 20 3a |mod.boar|d[i,j] :|
|000035f0| 3d 20 30 0d 09 09 09 09 | 09 09 45 4e 44 0d 09 09 |= 0.....|..END...|
|00003600| 09 09 09 45 4e 44 0d 09 | 09 09 09 45 4e 44 3b 0d |...END..|...END;.|
|00003610| 09 09 09 09 76 2e 6d 6f | 64 2e 6e 20 3a 3d 20 30 |....v.mo|d.n := 0|
|00003620| 3b 20 76 2e 6d 6f 64 2e | 73 63 6f 72 65 20 3a 3d |; v.mod.|score :=|
|00003630| 20 30 3b 20 76 2e 6d 6f | 64 2e 73 68 6f 77 73 6f | 0; v.mo|d.showso|
|00003640| 6c 20 3a 3d 20 46 41 4c | 53 45 3b 0d 09 09 09 09 |l := FAL|SE;.....|
|00003650| 76 2e 69 20 3a 3d 20 30 | 3b 20 76 2e 6a 20 3a 3d |v.i := 0|; v.j :=|
|00003660| 20 30 3b 0d 09 09 09 09 | 4d 6f 64 65 6c 73 2e 42 | 0;.....|Models.B|
|00003670| 72 6f 61 64 63 61 73 74 | 28 76 2e 6d 6f 64 2c 20 |roadcast|(v.mod, |
|00003680| 6d 73 67 29 3b 0d 09 09 | 09 09 56 69 65 77 73 2e |msg);...|..Views.|
|00003690| 45 6e 64 4d 6f 64 69 66 | 69 63 61 74 69 6f 6e 28 |EndModif|ication(|
|000036a0| 76 29 0d 09 09 09 45 4e | 44 0d 09 09 45 4e 44 09 |v)....EN|D...END.|
|000036b0| 09 0d 09 45 4e 44 20 53 | 65 74 3b 0d 0d 42 45 47 |...END S|et;..BEG|
|000036c0| 49 4e 0d 09 73 65 65 64 | 20 3a 3d 20 53 65 72 76 |IN..seed| := Serv|
|000036d0| 69 63 65 73 2e 54 69 63 | 6b 73 28 29 3b 20 70 61 |ices.Tic|ks(); pa|
|000036e0| 72 61 2e 62 6f 61 72 64 | 53 69 7a 65 20 3a 3d 20 |ra.board|Size := |
|000036f0| 38 3b 20 70 61 72 61 2e | 6e 72 4f 66 41 74 6f 6d |8; para.|nrOfAtom|
|00003700| 73 20 3a 3d 20 34 0d 45 | 4e 44 20 4f 62 78 42 6c |s := 4.E|ND ObxBl|
|00003710| 61 63 6b 42 6f 78 2e 82 | f1 54 65 78 74 43 6f 6e |ackBox..|.TextCon|
|00003720| 74 72 6f 6c 6c 65 72 73 | 2e 53 74 64 43 74 72 6c |trollers|.StdCtrl|
|00003730| 44 65 73 63 00 f1 54 65 | 78 74 43 6f 6e 74 72 6f |Desc..Te|xtContro|
|00003740| 6c 6c 65 72 73 2e 43 6f | 6e 74 72 6f 6c 6c 65 72 |llers.Co|ntroller|
|00003750| 44 65 73 63 00 f1 43 6f | 6e 74 61 69 6e 65 72 73 |Desc..Co|ntainers|
|00003760| 2e 43 6f 6e 74 72 6f 6c | 6c 65 72 44 65 73 63 00 |.Control|lerDesc.|
|00003770| f1 43 6f 6e 74 72 6f 6c | 6c 65 72 73 2e 43 6f 6e |.Control|lers.Con|
|00003780| 74 72 6f 6c 6c 65 72 44 | 65 73 63 00 f2 04 00 00 |trollerD|esc.....|
|00003790| 00 00 00 00 00 14 00 00 | 00 00 00 00 00 09 00 00 |........|........|
|000037a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 01 82 f1 54 |........|.......T|
|000037b0| 65 78 74 52 75 6c 65 72 | 73 2e 53 74 64 52 75 6c |extRuler|s.StdRul|
|000037c0| 65 72 44 65 73 63 00 f1 | 54 65 78 74 52 75 6c 65 |erDesc..|TextRule|
|000037d0| 72 73 2e 52 75 6c 65 72 | 44 65 73 63 00 f2 03 00 |rs.Ruler|Desc....|
|000037e0| 00 00 00 00 00 00 ab 00 | 00 00 07 00 00 00 a3 00 |........|........|
|000037f0| 00 00 00 00 00 83 f1 54 | 65 78 74 52 75 6c 65 72 |.......T|extRuler|
|00003800| 73 2e 53 74 64 53 74 79 | 6c 65 44 65 73 63 00 f1 |s.StdSty|leDesc..|
|00003810| 54 65 78 74 52 75 6c 65 | 72 73 2e 53 74 79 6c 65 |TextRule|rs.Style|
|00003820| 44 65 73 63 00 f2 07 00 | 00 00 00 00 00 00 00 00 |Desc....|........|
|00003830| 00 00 08 00 00 00 5a 00 | 00 00 00 00 00 00 82 f1 |......Z.|........|
|00003840| 54 65 78 74 52 75 6c 65 | 72 73 2e 41 74 74 72 69 |TextRule|rs.Attri|
|00003850| 62 75 74 65 73 44 65 73 | 63 00 f2 04 00 00 00 00 |butesDes|c.......|
|00003860| 00 00 00 00 00 00 00 00 | 00 00 00 24 00 00 00 00 |........|...$....|
|00003870| 01 00 00 00 00 00 00 00 | 00 20 a3 5a 00 00 00 00 |........|. .Z....|
|00003880| 00 18 f0 01 00 38 63 00 | 00 01 00 00 00 01 00 00 |.....8c.|........|
|00003890| 00 00 00 00 00 82 f2 0d | 00 00 00 00 00 00 00 00 |........|........|
|000038a0| 00 00 00 00 00 00 00 22 | 00 00 00 00 00 00 00 00 |......."|........|
|000038b0| 01 00 00 00 00 48 65 6c | 76 65 74 69 63 61 00 7c |.....Hel|vetica.||
|000038c0| be 01 00 00 00 00 00 90 | 01 00 00 00 00 00 00 00 |........|........|
|000038d0| 00 00 00 00 00 e0 8c 01 | 00 e0 8c 01 00 00 30 5c |........|......0\|
|000038e0| 00 e0 b9 3b 3e 82 f1 44 | 6f 63 75 6d 65 6e 74 73 |...;>..D|ocuments|
|000038f0| 2e 43 6f 6e 74 72 6f 6c | 6c 65 72 44 65 73 63 00 |.Control|lerDesc.|
|00003900| f2 10 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003910| 00 08 00 00 00 00 00 00 | 00 00 09 00 00 00 00 f8 |........|........|
|00003920| 1b 73 00 7c f9 a2 00 80 | fc 0a 00 80 fc 0a 00 a0 |.s.|....|........|
|00003930| 9f 65 00 fc fc 97 00 00 | 00 00 00 00 00 00 00 00 |.e......|........|
|00003940| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003980| 00 00 01 00 00 00 01 0c | 00 00 00 0c 00 00 00 32 |........|.......2|
|00003990| 00 00 00 04 01 7d 00 00 | 00 06 07 00 00 00 00 04 |.....}..|........|
|000039a0| 01 fc 00 00 00 05 07 00 | 00 00 6e be 00 06 00 00 |........|..n.....|
|000039b0| 08 42 6c 61 63 6b 42 6f | 78 61 02 00 00 00 50 61 |.BlackBo|xa....Pa|
|000039c0| 72 74 53 49 54 21 00 00 | 00 00 00 00 00 00 00 00 |rtSIT!..|........|
|000039d0| 00 00 50 61 72 74 53 49 | 54 21 00 00 00 00 00 00 |..PartSI|T!......|
|000039e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000039f0| 00 00 ae 04 81 ab 00 00 | 00 00 00 00 01 3e 6e c1 |........|.....>n.|
|00003a00| 01 64 00 00 00 0a 07 00 | 00 01 90 0c 00 5f 00 00 |.d......|....._..|
|00003a10| 00 0d 07 00 00 01 90 14 | 00 5c 00 00 00 0e 07 00 |........|.\......|
|00003a20| 00 01 90 3c 00 06 00 00 | 00 0f 07 00 00 01 90 3c |...<....|.......<|
|00003a30| 00 0b 00 00 00 10 07 00 | 00 01 90 3c 02 07 00 00 |........|...<....|
|00003a40| 00 0c 07 ff 00 01 a3 f1 | 00 d1 00 00 00 11 07 00 |........|........|
|00003a50| 00 01 90 4c 01 53 00 00 | 00 0c 07 00 00 01 90 38 |...L.S..|.......8|
|00003a60| 00 d4 00 00 00 10 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003a80| 00 00 00 08 00 28 00 50 | 01 c7 02 43 00 00 01 00 |.....(.P|...C....|
|00003a90| 00 00 01 0c 00 00 00 0c | 00 00 00 32 01 29 fb 98 |........|...2.)..|
|00003aa0| 17 24 00 00 00 1c 00 32 | 00 00 57 4e 53 50 00 00 |.$.....2|..WNSP..|
|00003ab0| 00 0a 00 01 ff ff 00 00 | 00 00 01 29 ff 6c 00 00 |........|...).l..|
|00003ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003ae0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003af0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+